会话超时不起作用(在web.config中设置)

时间:2016-03-08 08:55:09

标签: asp.net-mvc web-config

我使用ClaimsIdentity Framework在我的一个应用程序中设置auth。

我将这些行添加到 web.config 文件中,如this question中所述。

<sessionState
         mode="InProc"
         timeout="1" />

我让应用程序一夜之间运行,但我仍然登录。 我想将会话超时设置为30分钟,有什么建议吗?

ASP.NET MVC版本:5.2.3.0

1 个答案:

答案 0 :(得分:2)

ASP.Net-Identity-Cookie-Authentication-Timeouts你应该使用Identity的UseCookieAuthentication()参数来设置超时。

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
  AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
  LoginPath = new PathString("/Account/Login"),
  Provider = new CookieAuthenticationProvider
  {
    OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
        validateInterval: TimeSpan.FromMinutes(15),
        regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)),
  },
  SlidingExpiration = false,
  ExpireTimeSpan = TimeSpan.FromMinutes(30)
});
  

CookieAuthenticationOptions.ExpireTimespan是一个选项,允许您设置发布的cookie有效的时间。在上面的示例中,cookie从创建时起30分钟有效。一旦这30分钟结束,用户将不得不重新签名,因为SlidingExpiration设置为false。

     

如果SlidingExpiration设置为true,那么将在ExpireTimeSpan中途的任何请求上重新发出cookie。例如,如果用户登录并在16分钟后再发出第二个请求,则会再次发出cookie 30分钟。如果用户登录,然后在31分钟后发出第二个请求,则会提示用户登录。