控制cookie生命周期的三个属性中哪一个优先?

时间:2014-07-31 20:30:33

标签: authentication asp.net-mvc-5 asp.net-identity

通过将AuthenticationProperties.IsPersistent设置为true,我们会将身份验证Cookie 设置为持久性,因此用户在启动新会话时不必再次进行身份验证 < / p>

CookieAuthenticationOptions.ExpireTimeSpans控制Cookie的有效期。

AuthenticationProperties.ExpiresUtc设置身份验证的到期日期

a)我不确定&#34; 认证的到期日期是什么意思&#34;。上面的引言可能是ExpiresUtc控制身份验证cookie 可用于身份验证的时间,然后再次要求用户登录

b)如果我在 a)中的假设是正确的,那么当达到ExpireUtc时, cookie 将会过期如果:

  • IsPersistent == true

  • 会话尚未过期且

  • Cookie还没有超过ExpireTimeSpan设置的生命周期?

c)如果IsPersistent设置为false,则会话过期后, Cookie 即使符合以下条件,它也不再有效:

  • Cookie尚未超过ExpireTimeSpan

  • 设置的生命周期
  • 身份验证尚未达到ExpireUtc设置的生命周期?

d)当Cookie超过ExpireTimeSpan设置的生命周期时,即使符合以下条件,Cookie也不再有效:

  • IsPersistent == true

  • 会话尚未过期且

  • 身份验证尚未达到ExpireUtc设置的生命周期?

谢谢

2 个答案:

答案 0 :(得分:0)

对于Identity Framework,有一个属性ExpireTimeSpan,它建议cookie的生命周期。根据以下示例,cookie将在24小时后失效。

    public static void ConfigureOAuthSettings(IAppBuilder app)
    {
        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            SlidingExpiration = false,
            ExpireTimeSpan = TimeSpan.FromHours(24)
        });}

如果您想获得更详细的代码,请访问here

答案 1 :(得分:0)

如果AuthenticationProperties.IsPersistent为假

  • cookie的有效期限设置为“会话”
  • 忽略CookieAuthenticationOptions.ExpireTimeSpans
  • 忽略AuthenticationProperties.ExpiresUtc

否则

如果未设置AuthenticationProperties.ExpiresUtc

  • cookie的过期时间设置为CookieAuthenticationOptions.ExpireTimeSpans,默认为14 days

如果设置了AuthenticationPropertise.ExpiresUtc

  • cookie的过期时间设置为该时间
  • 忽略CookieAuthenticationOptions.ExpireTimeSpans