ওউইন কুকি প্রমাণীকরণ ব্যবহার করে আমার একটি অদ্ভুত সমস্যা রয়েছে।
আমি যখন শুরু করি তখন আমার আইআইএস সার্ভারের প্রমাণীকরণ আইই / ফায়ারফক্স এবং ক্রোমে পুরোপুরি সূক্ষ্ম কাজ করে।
প্রমাণীকরণ এবং বিভিন্ন প্ল্যাটফর্মে লগ ইন করে কিছু পরীক্ষা করা শুরু করেছিলাম এবং আমি একটি অদ্ভুত ত্রুটি নিয়ে এসেছি। স্পষ্টতই ওউইন ফ্রেমওয়ার্ক / আইআইএস ব্রাউজারগুলিতে কোনও কুকিজ প্রেরণ করে না। আমি একটি ব্যবহারকারীর নাম এবং পাসওয়ার্ড টাইপ করব যা কোডটি সঠিকভাবে চালিত হয় তবে কোনও কুকি ব্রাউজারে দেওয়া হয় না। যদি আমি সার্ভারটি পুনরায় চালু করে এটি কাজ করা শুরু করে তবে কিছু সময় আমি লগইন করে চেষ্টা করব এবং আবার কুকিজ বিতরণ বন্ধ হবে। কোডটির পদক্ষেপে কিছু হয় না এবং কোনও ত্রুটি নিক্ষেপ করে।
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationMode = AuthenticationMode.Active,
CookieHttpOnly = true,
AuthenticationType = "ABC",
LoginPath = new PathString("/Account/Login"),
CookiePath = "/",
CookieName = "ABC",
Provider = new CookieAuthenticationProvider
{
OnApplyRedirect = ctx =>
{
if (!IsAjaxRequest(ctx.Request))
{
ctx.Response.Redirect(ctx.RedirectUri);
}
}
}
});
এবং আমার লগইন পদ্ধতির মধ্যে আমার কাছে নিম্নলিখিত কোড রয়েছে:
IAuthenticationManager authenticationManager = HttpContext.Current.GetOwinContext().Authentication;
authenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
var authentication = HttpContext.Current.GetOwinContext().Authentication;
var identity = new ClaimsIdentity("ABC");
identity.AddClaim(new Claim(ClaimTypes.Name, user.Username));
identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, user.User_ID.ToString()));
identity.AddClaim(new Claim(ClaimTypes.Role, role.myRole.ToString()));
authentication.AuthenticationResponseGrant =
new AuthenticationResponseGrant(identity, new AuthenticationProperties()
{
IsPersistent = isPersistent
});
authenticationManager.SignIn(new AuthenticationProperties() {IsPersistent = isPersistent}, identity);
আপডেট 1: মনে হচ্ছে সমস্যার এক কারণ হ'ল যখন আমি সমস্যাগুলি সেশনে আইটেম যুক্ত করি। সাধারণ কিছু যোগ করা Session.Content["ABC"]= 123
সমস্যা মনে হচ্ছে।
আমি যা করতে পারি তা নীচে: 1) (Chrome) লগইন করার সময় আমি ASP.NET_SessionId + আমার প্রমাণীকরণের কুকি পাই। ২) আমি এমন একটি পৃষ্ঠায় যাচ্ছি যা একটি সেশন কন্টেন্টস সেট করে ... 3) একটি নতুন ব্রাউজার খুলুন (ফায়ারফক্স) এবং লগইন করার চেষ্টা করুন এবং এটি কোনও এএসপি.এনইT_ সেশনআইড পায় না এবং এটি কোনও প্রমাণীকরণ কুকি পায় না 4) প্রথম ব্রাউজারে ASP.NET_Sશન রয়েছে এটি কাজ চালিয়ে যায়। আমি এই কুকিটি সরিয়ে নেওয়ার মুহুর্তে এটি অন্যান্য সমস্যাযুক্ত আইপি ঠিকানার (10.XXX) এবং লোকালহোস্টে অন্য যে সমস্ত ব্রাউজারে কাজ করছি তাতে একই সমস্যা রয়েছে।
আপডেট 2: এর ফোর্স সৃষ্টি ASPNET_SessionId
OWIN প্রমাণীকরণের সামনে আমার login_load পৃষ্ঠাতে প্রথম।
1) OWIN এর সাথে প্রমাণীকরণের আগে আমি Session.Content
আমার লগইন পৃষ্ঠায় এএসপি.এন.ইস.এসইশনআইডি শুরু করার জন্য একটি এলোমেলো মান তৈরি করি 2) তারপরে আমি প্রমাণীকরণ করি এবং আরও অধিবেশন তৈরি করি 3) অন্যান্য ব্রাউজারগুলি এখন কাজ করছে বলে মনে হচ্ছে
এটা উদ্ভট। আমি কেবল এই সিদ্ধান্তে পৌঁছাতে পারি যে এএসপি এবং ওউইউআইএন এর সাথে কিছু চিন্তা আছে যে তারা বিভিন্ন ডোমেনে বা এ জাতীয় কিছুতে রয়েছে।
আপডেট 3 - দুজনের মধ্যে অদ্ভুত আচরণ।
অতিরিক্ত অদ্ভুত আচরণ চিহ্নিত করা হয়েছে - ওউইনের সময়সীমা এবং এএসপি সেশনটি আলাদা। আমি যা দেখছি তা হল যে আমার ওউইন সেশনগুলি কোনও যান্ত্রিকতার মাধ্যমে আমার এএসপি সেশনের চেয়ে বেশি দিন বেঁচে থাকবে। সুতরাং লগ ইন করার সময়: ১।) আমার কাছে একটি কুকি ভিত্তিক লেখক সেশন রয়েছে)) আমি কয়েকটি সেশন ভেরিয়েবল সেট করি
ওউন কুকি সেশন ভেরিয়েবলের পুনরায় লগইন করার আগে আমার সেশন ভেরিয়েবলগুলি (2) "মারা" যায় যা আমার পুরো অ্যাপ্লিকেশন জুড়ে অপ্রত্যাশিত আচরণের কারণ হয়। (ব্যক্তি লগ ইন করেছেন তবে সত্যই লগ ইন নেই)
আপডেট 3 বি
কিছু খননের পরে আমি একটি পৃষ্ঠায় কিছু মন্তব্য দেখেছি যা বলছে যে "ফর্মগুলি" প্রমাণীকরণের সময়সীমা এবং সেশনের সময়সীমা মিলিয়ে নেওয়া দরকার। আমি সাধারণত ভাবছি দুজনে সমন্বয় হয় তবে যে কারণেই দু'জনে সিঙ্ক হয় না।
কর্মক্ষেত্রের সংক্ষিপ্তসার
1) প্রমাণীকরণের আগে সর্বদা একটি সেশন তৈরি করুন। আপনি অ্যাপ্লিকেশন শুরু করার সময় মূলত সেশন তৈরি করুনSession["Workaround"] = 0;
২) [পরীক্ষামূলক] যদি আপনি কুকিগুলি অবিরত করেন তবে নিশ্চিত করুন যে আপনার ওউইন টাইমআউট / দৈর্ঘ্যটি আপনার ওয়েবকনফাইগের সময় থেকে আপনার সেশনটির চেয়ে বেশি হবে (পরীক্ষায়)