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
。
link でIsPersistent
の定義を確認しました:
認証セッションが複数の要求にわたって保持されるかどうかを取得または設定します。
しかし、私はそれがまだ機能していると思うので、あまり理解してはいけません。
OWIN Cookie認証をセットアップするコード:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationMode = AuthenticationMode.Active,
AuthenticationType = ApplicationTypes.ApplicationCookie,
ExpireTimeSpan = TimeSpan.FromMinutes(30),
LoginPath = new PathString("/Account/LogOn")
});
永続的なCookieは、有効期限が切れるか手動で削除されるまで、ブラウザーフォルダーにファイルとして保存されます。これにより、ブラウザを閉じてもCookieが保持されます。
IsPersistentがfalseに設定されている場合、ブラウザーはセッションCookieを取得し、ブラウザーが閉じられるとクリアされます。
ブラウザの再起動後にセッションCookieがクリアされない理由は、chromeデフォルト設定です。修正するには、chromesettings->advanced、およびチェックを外してGoogle Chromeは閉じられています underSystemセクション.
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;
}