如何在ASP.NET MVC 5中设置Forms Auth cookie expiration?

时间:2014-04-10 22:07:04

标签: asp.net-mvc-5 owin

在我Login的{​​{1}}方法中,我有以下内容:

AccountController

其中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)); 是计算出的expiry值。

无论我为DateTimeOffset值设置什么,expiry的到期时间始终为14天。

有没有办法自定义此到期值?

它与https://katanaproject.codeplex.com/workitem/115有关吗?

请注意,在.AspNet.ApplicationCookie中,我没有设置Startup.Auth.cs属性。当我设置该属性时,它的值被尊重,并且上面的方法仍然没有做任何事情。

1 个答案:

答案 0 :(得分:2)

这已在2014年4月16日的this commit中修复。

    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;
    }