要求用户每20分钟左右登录一次。
其中一种不知道在哪里看的情况。我正在使用C#MVC 5 IdentityFramework 1.0.0
我希望将超时时间设为4小时。
直到现在我已经尝试过web.config:
<system.web>
<sessionState timeout="2880"></sessionState>
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
</system.web>
并在Startup.Auth.sc中:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
ExpireTimeSpan = TimeSpan.FromHours(4),
CookieSecure = CookieSecureOption.Never,
CookieHttpOnly = false,
SlidingExpiration = true,
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login")
});
我错过了什么?
编辑 - 解决方案
解决方案是将machineKey放在system.web下的web.config中。密钥生成器可以找到http://aspnetresources.com/tools/machineKey
我还迁移到了Identity 2.0并保留了这些设置。使用此博客作为guid迁移:http://typecastexception.com/post/2014/07/13/ASPNET-Identity-20-Extending-Identity-Models-and-Using-Integer-Keys-Instead-of-Strings.aspx
答案 0 :(得分:2)
即使您在本地运行该网站,是否会发生这种情况?看一下描述类似案例的this blog post。
博客文章的重点是:
...请记住,Forms Authentication使用计算机的machineKey 加密表单身份验证cookie。 &#34;机器钥匙可以吗? 在我的共享托管服务器上随时间变化?&#34;,我想知道。
在通过电子邮件发送询问之前,我查看了MSDN上的文档 machineKey并发现可以使用AutoGenerate模式 设置为每次主机进程为a时重新生成一个新的machineKey 网络应用程序启动... 20分钟不活动后!啊哈!
答案 1 :(得分:0)
确保您没有任何后台ajax活动,因为它会影响会话(默认情况下SlidingExpiration为true)。此外,您必须在将ExpireTimeStamp从默认的14天更改为较小的值后手动删除旧的Cookie。