2016-03-22 7 views
5

मैं क्या करना चाहता हूं कि उपयोगकर्ता आईडी को एक समय में केवल एक डिवाइस में लॉग इन करने में सक्षम होना है। उदाहरण के लिए, उपयोगकर्ता आईडी "abc" उनके कंप्यूटर में लॉग इन करता है। उपयोगकर्ता आईडी "abc" अब अपने फोन से लॉग इन करने का प्रयास करती है। मैं अपने कंप्यूटर पर सत्र को मारना चाहता हूं।Asp.net mvc पहचान सुरक्षा स्टाम्प साइनआउट हर जगह

मैं इस उद्देश्य के लिए Asp.net एमवीसी पहचान सदस्यता और सुरक्षा स्टाम्प का उपयोग कर रहा हूं।

[HttpPost] 
    [AllowAnonymous] 
    [ValidateAntiForgeryToken] 
    public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) 
    { 
     var user = UserManager.FindByEmail(model.Email); 
     var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false); 
     await UserManager.UpdateSecurityStampAsync(user.Id); 

UpdateSecurityStampAsync विधि दस्तावेज़ के अनुसार कहते हैं:: एक उपयोगकर्ता, SignOutEverywhere कार्यक्षमता के लिए प्रयोग किया जाता है के लिए एक नया सुरक्षा टिकट उत्पन्न इस खाते/लॉगिन कार्रवाई में मेरी कोड है। लेकिन यह काम नहीं करता है।

उत्तर

3

यदि आप अन्य उपकरणों पर कुकीज़ की त्वरित अमान्यता को सक्षम करना चाहते हैं, तो प्रत्येक अनुरोध को कुकी को सत्यापित करने के लिए डेटाबेस को हिट करना होगा। कि आप 0 Auth.Config.cs में कुकी अमान्यकरण कॉन्फ़िगर और validateInterval निर्धारित करने की आवश्यकता करने के लिए:

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    Provider = new CookieAuthenticationProvider 
    { 
     // Enables the application to validate the security stamp when the user logs in. 
     // This is a security feature which is used when you change a password or add an external login to your account.    
     OnValidateIdentity = SecurityStampValidator 
       .OnValidateIdentity<UserManager, ApplicationUser>(
        validateInterval: TimeSpan.FromSeconds(0), 
        regenerateIdentityCallback: (manager, user) => user.GenerateUserIdentityAsync(manager)) 
    }    
); 
+0

हां। यह प्रत्येक अनुरोध पर एक अतिरिक्त डेटाबेस हिट – tmg

+0

पासवर्डSignInAsync – tmg

+0

से पहले UpdateSecurityStampAsync को आजमाएं, आप लॉग आउट नहीं कर सकते हैं या अन्य डिवाइस पर उपयोगकर्ता लॉगआउट नहीं कर रहे हैं? – tmg