Asp.net mvc identity SecurityStamp, déconnectez-vous partout

Ce que je veux faire est de limiter un ID utilisateur à la possibilité de se connecter à un seul périphérique à la fois. Par exemple, l’ID utilisateur “abc” se connecte à son ordinateur. L’identifiant “abc” tente maintenant de se connecter depuis son téléphone. Ce que je veux, c’est tuer la session sur leur ordinateur.

J’utilise l’appartenance Asp.net mvc et j’utilise SecurityStamp à cette fin Ceci est mon code dans l’action Compte / Connexion:

[HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task Login(LoginViewModel model, ssortingng 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); 

Selon la méthode UpdateSecurityStampAsync , la documentation indique: Génère un nouveau timbre de sécurité pour un utilisateur, utilisé pour la fonctionnalité SignOutEverywhere. Mais ça ne marche pas.

Si vous souhaitez activer l’invalidation instantanée des cookies sur d’autres appareils, chaque demande doit alors accéder à la firebase database pour valider le cookie. Pour ce faire, vous devez configurer l’invalidation du cookie dans Auth.Config.cs et définir validateInterval sur 0:

 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( validateInterval: TimeSpan.FromSeconds(0), regenerateIdentityCallback: (manager, user) => user.GenerateUserIdentityAsync(manager)) } );