我在我的mvc项目上使用表单身份验证,似乎无论我做什么。您只能保持登录一天,然后需要您再次登录。
在我的web.config中,我将超时设置为以分钟为单位的一周。
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="10080" defaultUrl="/kpi" slidingExpiration="true" />
</authentication>
这就是我设置cookie的地方。
var cookie = FormsAuthentication.GetAuthCookie(account.UserName, account.RememberMe);
if (account.RememberMe)
cookie.Expires = DateTime.Now.AddDays(7);
Response.Cookies.Add(cookie);
var returnURL = FormsAuthentication.GetRedirectUrl(account.UserName, account.RememberMe);
var hashData = Request.Form["HashHidden"];
答案 0 :(得分:2)
每次IIS回收应用程序时,都会生成一个新的计算机密钥。您的身份验证票证使用该计算机密钥进行签名,因此在生成新的凭证时,将不再识别身份验证票证。您需要在web.config中设置静态机器密钥。
答案 1 :(得分:0)
您需要使用FormsAuthentication.SetAuthCookie(username, persistent)
设置http://msdn.microsoft.com/en-us/library/twk5762b(v=vs.110).aspx
并在web.config中设置正确的超时
<system.web>
<authentication mode="Forms">
<forms timeout="10080" slidingExpiration="true"/>
</authentication>
</system.web>