我有一个ASP.NET MVC应用程序,我收到了用户的抱怨,他们在相对较短的时间后就已经注销了。
我在web.config
中有以下设置,但显然它不起作用。
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
知道为什么这不起作用吗?
答案 0 :(得分:0)
我认为您遇到与here
相同的问题因此,您应该将机器密钥放在Web.Config中。例如:
<configuration>
<system.web>
<machineKey decryptionKey="F6722806843145965513817CEBDECBB1F94808E4A6C0B2F2,IsolateApps" validationKey="C551753B0325187D1759B4FB055B44F7C5077B016C02AF674E8DE69351B69FEFD045A267308AA2DAB81B69919402D7886A6E986473EEEC9556A9003357F5ED45,IsolateApps" />
</system.web>
</configuration>
答案 1 :(得分:0)
如果您希望用户在他/她的浏览器打开之前保持登录状态,我会做一个技巧。我创建一个Action或任何处理程序,如下所示,它只返回一些虚拟文本(例如:context.User.Identity.IsAuthenticated
),然后使用jQuery.get
来请求它。我保持用户登录,因为浏览器会发送请求:
处理程序:
public class KeepAlive : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Write(context.User.Identity.IsAuthenticated);
}
public bool IsReusable
{
get
{
return false;
}
}
}
MVC行动:
public bool KeppChecking()
{
return User.Identity.IsAuthenticated;
}
jQuery的:
setInterval(function () {
$.get('/Ajax/KeepAlive.ashx');
}, 10000);