web-dev-qa-db-fra.com

ASP.NET Identity AuthenticationManager vs SignInManager et expiration des cookies

Quelle est la différence entre l'utilisation d'AuthenticationManager SignIn et l'utilisation de SignInManager PasswordSignIn/SignIn? J'ai une implémentation utilisant SignInManager et mon expiration de cookie est définie sur 30 jours, mais il semble que mon application Web expire au hasard mes cookies bien avant 30 jours. L'utilisation de l'implémentation de SignInManager en serait-elle la cause? Dois-je plutôt utiliser l'implémentation AuthenticationManager?

L'exemple de code prêt à l'emploi montre une connexion comme celle-ci, mais j'ai également vu d'autres exemples qui utilisent l'implémentation AuthenticationManager.

var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);

Voici ma configuration de démarrage.

            app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            ExpireTimeSpan = TimeSpan.FromDays(30),
            LoginPath = new PathString("/signin"),
            Provider = new CookieAuthenticationProvider
            {
                OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<AppUserManager, AppUser>(
                    validateInterval: TimeSpan.FromMinutes(30),
                    regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
            }
        });
        app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
        app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(5));
        app.UseTwoFactorRememberBrowserCookie(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie);
27
Scott Wilson

Avant la sortie de la version 2.1.0 du framework d'identité, nous devons écrire notre propre code afin d'obtenir des résultats (SignInStatus) pour l'authentification à deux facteurs, le verrouillage de compte, EmailToBeConfirmed etc. Avec le SignInManager, cela a été simplifié et nous obtenons SignInStatus avec une ligne de code.

Vous pouvez comprendre cette vérification après les packages NuGet et la compilation de deux versions.

Version 2.0.0: Install-Package Microsoft.AspNet.Identity.Samples -Version 2.0.0-beta1 -Pre

Version 2.1.0: Install-Package Microsoft.AspNet.Identity.Samples -Pre

AuthenticationManager.SignIn est le mécanisme utilisé derrière le SignInManager pour terminer le processus de connexion de l'utilisateur, afin qu'il n'y ait aucune différence entre AuthenticationManager.SignIn et SignInManager.PasswordSignIn/SignIn. Nous pourrions expliquer SignInManager comme une classe d'assistance pour gérer tous les types d'authentification comme PasswordSignIn/SignIn, SignInOrTwoFactor.

Par conséquent, l'expiration des cookies ne dépend pas de la méthode que vous avez utilisée pour vous connecter, car toutes configurées dans le CookieAuthenticationOptions du démarrage.

30
DSR