如何设置asp.net Identity的cookie过期时间
如何设置asp.net Identity的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 }); }
以及SignIn代码如下:
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的过期日期已经是“Session”,而不是当前时间加上30分钟。
当使用上述代码时,cookie的状态如上图所示,所以“记住我”复选框无法工作。:(。
app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = new PathString("/Account/Login"), ExpireTimeSpan = TimeSpan.FromMinutes(30), SlidingExpiration = true, CookieName = WebHelpers.ConstStrings.AUTHCOOKIESNAME });