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)