web-dev-qa-db-ja.com

OWIN Cookie認証でのIsPersistentの動作

OWIN Cookie認証でIsPersistentがどのように機能するか明確に理解していないようです。以下のコードではIsPersistentを使用します。

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

authManager.SignIn(properties, identity);

ユーザーがチェック/チェック解除しても違いは見られないRemember me(背後にあるIsPersistentを使用)Chromeブラウザーを閉じてから再度開いてWebサイトにアクセスするには、Cookie .AspNet.ApplicationCookieはまだそこにあり、チェックを入れたり外したりしてもかまいませんRemember me

linkIsPersistentの定義を確認しました:

認証セッションが複数の要求にわたって保持されるかどうかを取得または設定します。

しかし、私はそれがまだ機能していると思うので、あまり理解してはいけません。

OWIN Cookie認証をセットアップするコード:

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

永続的なCookieは、有効期限が切れるか手動で削除されるまで、ブラウザーフォルダーにファイルとして保存されます。これにより、ブラウザを閉じてもCookieが保持されます。

IsPersistentがfalseに設定されている場合、ブラウザーはセッションCookieを取得し、ブラウザーが閉じられるとクリアされます。

ブラウザの再起動後にセッションCookieがクリアされない理由は、chromeデフォルト設定です。修正するには、chromesettings->advanced、およびチェックを外してGoogle Chromeは閉じられています underSystemセクション.

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