के लिए मान्य है मेरे पास ASP.NET MVC 5
उपयोगकर्ता प्रमाणीकरण के लिए ASP.NET Identity 2.1.0
का उपयोग कर एप्लिकेशन है।
सबकुछ अतीत में ठीक काम करता था, लेकिन अब मुझे पता चला है कि लगातार उपयोगकर्ता सत्र अब काम नहीं करते हैं। मैं बता सकता हूँ नहीं क्या परिवर्तन इस तोड़ दिया है, लेकिन यह काम किया जब मैं पहचान कार्यान्वित (SimpleMembership
से आवेदन परिवर्तित) और यह मेरा तर्क है मैं इस समय है:IsPersistent काम नहीं कर रहा है - कुकी केवल वर्तमान सत्र
var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password,
model.RememberMe, shouldLockout: true);
SignInManager
है मेरी ApplicationSignInManager
पर SignInManager<ApplicationUser, int>
और model.RememberMe
आधारित true
है।
और मेरे सेटअप:
app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = ApplicationCookieIdentityValidator.OnValidateIdentity(
validateInterval: TimeSpan.FromMinutes(0),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(5));
app.UseTwoFactorRememberBrowserCookie(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie);
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
सब कुछ ठीक काम करता है, उपयोगकर्ता सत्र बने छोड़कर। मैंने अपने सर्वर द्वारा लौटाई गई कुकीज़ की जांच की और .AspNet.ApplicationCookie
भविष्य में कुछ तारीखों के बजाय हमेशा "मौजूदा सत्र के लिए मान्य" के रूप में लौटा दिया गया है। तो जब मैं ब्राउज़र को बंद और दोबारा खोलता हूं तो मुझे फिर से लॉग इन करने की आवश्यकता होती है ...
क्या किसी को पता है कि यह क्यों काम नहीं कर रहा है (अब)?
पुनश्च: मैं अपने ApplicationSignInManager
में SignInAsync
ओवरराइड है क्योंकि मैं कुछ कस्टम तर्क वहाँ करते हैं, लेकिन मैं भी डीबगर के साथ और निम्नलिखित कॉल के लिए जाँच:
await base.SignInAsync(user, isPersistent, rememberBrowser);
isPersistent
, true
है, इसलिए यह बनाना चाहिए एक सतत कुकी।
मुझे संदेह है कि 'वैधता इंटरवल: टाइमस्पैन। फ्रॉममिन्यूट्स (0)' इसका कारण बन सकता है। क्योंकि हर अनुरोध पर यह कुकी को पुन: उत्पन्न करता है और एक नया सेट करता है। 0 से अधिक कुछ के लिए 'validateInterval' सेट करने का प्रयास करें और देखें कि क्या यह काम करता है। – trailmax
@trailmax: धन्यवाद, वह था।क्या वी 2.1 के साथ यह परिवर्तन था? क्योंकि यह निश्चित रूप से शुरुआत में (वी 2.0 के साथ) काम करता था। किसी भी तरह: इसे एक उत्तर के रूप में पोस्ट करें और मैं इसे स्वीकार करूंगा। अब मुझे इसके बारे में पता लगाने की जरूरत है, क्योंकि मुझे हर अनुरोध पर (एसएसओ की वजह से) सत्यापन की आवश्यकता है। – ChrFin