web-dev-qa-db-ja.com

asp.net ID Cookieの有効期限を設定する方法

Asp.Net Identityを使用して、アプリの承認を制御します。次に、これを行う必要があります。ユーザーが30分以内に操作しない場合は、ログインで「isPersistent」チェックボックスが選択されていないときにログインページにジャンプします。また、「isPersistent」チェックボックスを選択した場合、Cookieの有効期限を14日間に設定します。 Startup.Auth.csを次のように変更して、これを実行しようとしています。

public void ConfigureAuth(IAppBuilder app)
{
    app.UseCookieAuthentication(new CookieAuthenticationOptions
    {
        AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
        LoginPath = new PathString("/Account/Login"),
        SlidingExpiration = true,
        CookieName = WebHelpers.ConstStrings.AUTHCOOKIESNAME
    });
}

そして、このようなサインインコード:

private async Task SignInAsync(User user, bool isPersistent)
{
    AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
    var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
    if (isPersistent)
    {
        AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);
    }
    else
    {
        AuthenticationManager.SignIn(new AuthenticationProperties() { ExpiresUtc = new DateTimeOffset(DateTime.UtcNow.AddMinutes(30)) }, identity);
    }
}

しかし、ユーザーがisPersistentチェックボックスを選択しない場合、Cookieの有効期限は既に「セッション」であり、現在の時刻に30分を足したものではありません。

enter image description here

Afterのようなコードを使用した場合のCookieのステータスのため、「remember me」チェックボックスは機能しません。

        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            LoginPath = new PathString("/Account/Login"),
            ExpireTimeSpan = TimeSpan.FromMinutes(30),
            SlidingExpiration = true,
            CookieName = WebHelpers.ConstStrings.AUTHCOOKIESNAME
        });

enter image description here

24
Ivan.Yu

これを使って...

public void ConfigureAuth(IAppBuilder app)
{
  app.UseCookieAuthentication(new CookieAuthenticationOptions
  {
      ExpireTimeSpan = TimeSpan.FromHours(1),
  });            
}
8
Nabeel Zafar

同じ問題があり、このコードは(Startup.csファイル内で)私のために働きました。

_services.Configure<IdentityOptions>(options =>
{
    options.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromDays(9999);
});
_

これにより、永続的なCookieにおよそ27年(または無期限)が追加されます。

NB:有効期限を短くしたい場合は、TimeSpan.FromMinutes(1);を1分間、TimeSpan.FromSeconds(30);を30秒などで使用できます。

1
Garth