Asp.net mvc 5 如何在ASP.NET MVC 5中设置窗体身份验证cookie过期?
在我的Asp.net mvc 5 如何在ASP.NET MVC 5中设置窗体身份验证cookie过期?,asp.net-mvc-5,owin,Asp.net Mvc 5,Owin,在我的AccountController的Login方法中,我有以下内容: var claims = new List<Claim>(); claims.Add(new Claim(ClaimTypes.Name, model.UserName)); AuthenticationManager.SignIn( new AuthenticationProperties { IsPersistent = model.RememberMe,
AccountController
的Login
方法中,我有以下内容:
var claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.Name, model.UserName));
AuthenticationManager.SignIn(
new AuthenticationProperties { IsPersistent = model.RememberMe,
ExpiresUtc = expiry },
new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie));
var索赔=新列表();
添加(新索赔(ClaimTypes.Name,model.UserName));
AuthenticationManager.SignIn(
新的AuthenticationProperties{IsPersistent=model.RememberMe,
ExpiresUtc=expire},
新的索赔实体(索赔、DefaultAuthenticationTypes.ApplicationOkie);
其中,expiry
是计算得出的DateTimeOffset
值
无论我为到期
值设置了什么,.AspNet.applicationcokie
的到期时间始终为14天
有没有办法自定义此过期值
它与什么有关
请注意,在Startup.Auth.cs
中,我没有ExpireTimeSpan
属性集。当我设置该属性时,它的值受到尊重,而上面的方法仍然不起任何作用 这是在2014年4月16日确定的
protected override async Task ApplyResponseGrantAsync()
...
DateTimeOffset issuedUtc = Options.SystemClock.UtcNow;
(-) DateTimeOffset expiresUtc = issuedUtc.Add(Options.ExpireTimeSpan);
context.Properties.IssuedUtc = issuedUtc;
(-) context.Properties.ExpiresUtc = expiresUtc;
(+) if (!context.Properties.ExpiresUtc.HasValue)
(+) {
(+) context.Properties.ExpiresUtc = issuedUtc.Add(Options.ExpireTimeSpan);
(+) }
Options.Provider.ResponseSignIn(context);
if (context.Properties.IsPersistent)
{
(+) DateTimeOffset expiresUtc = context.Properties.ExpiresUtc ?? issuedUtc.Add(Options.ExpireTimeSpan);
cookieOptions.Expires = expiresUtc.ToUniversalTime().DateTime;
}
我想指出另一件事,如果有人用Owin调试cookie过期,他们可能会遇到。显然,检查身份验证cookie过期的时间间隔是由CookieAuthenticationProvider.OnValidateIdentity属性定义的。从使用OWIN标识的MVC5模板创建的项目设置的时间间隔为30分钟。因此,auth cookie可能已过期,但在达到该时间间隔之前,它不会超时用户的会话。在Startup.Auth.cs:
validateInterval:TimeSpan.FromMinutes(30)