web-dev-qa-db-fra.com

Fonctionnement d'IsPersistent dans l'authentification par cookie OWIN

Il semble que je ne comprenne pas clairement le fonctionnement de IsPersistent dans l'authentification par cookie OWIN, le code ci-dessous est d'utiliser IsPersistent:

var context = Request.GetOwinContext();
var authManager = context.Authentication;
var properties = new AuthenticationProperties { IsPersistent = isPersistence };

authManager.SignIn(properties, identity);

Je ne vois pas la différence lorsque l'utilisateur vérifie/décoche Remember me (utilise IsPersistent derrière) parce que si je ferme Chrome navigateur et l'ouvre à nouveau pour aller avec le site Web, le cookie .AspNet.ApplicationCookie est toujours là et il me permet même si je vérifie ou décoche Remember me.

J'ai vérifié la définition de IsPersistent sur le lien :

Obtient ou définit si la session d'authentification est persistée sur plusieurs demandes.

Mais ne comprenez pas beaucoup car je vois que cela fonctionne toujours.

Le code pour configurer l'authentification par cookie OWIN:

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationMode = AuthenticationMode.Active,
    AuthenticationType = ApplicationTypes.ApplicationCookie,
    ExpireTimeSpan = TimeSpan.FromMinutes(30),
    LoginPath = new PathString("/Account/LogOn")
});
35
cuongle

Les cookies persistants seront enregistrés sous forme de fichiers dans les dossiers du navigateur jusqu'à leur expiration ou leur suppression manuelle. Cela entraînera la persistance du cookie même si vous fermez le navigateur.

Si IsPersistent est défini sur false, le navigateur acquiert un cookie de session qui est effacé lorsque le navigateur est fermé.

Maintenant, le cookie de session ne disparaîtra pas après le redémarrage du navigateur à cause des paramètres par défaut chrome. Pour le corriger, accédez à chrome paramètres -> avancé et décochez Continuez à exécuter les applications en arrière-plan lorsque Google Chrome est fermé sous la section Système .

67
Hezye
public void Configuration(IAppBuilder app)
{
    //Some Code
    app.UseCookieAuthentication(GetCookieAuthenticationOptions());
    //Some Code
}

private static CookieAuthenticationOptions GetCookieAuthenticationOptions()
{
    var options  = new CookieAuthenticationOptions();
    {
        CookieName = "AuthCookie",  //Some cookie settings here
    };
    var provider = (CookieAuthenticationProvider)options.Provider;
    provider.OnResponseSignIn = (context) => 
    {
        context.Properties.IsPersistent = true;
        context.Properties.ExpiresUtc = DateTimeOffset.UtcNow.AddHours(24);
    };
    return options;
}
2
Balaji Gunasekaran