Pet*_*etr 3 c# asp.net session-cookies asp.net-mvc-3
我刚刚推出了我的第一个MVC3应用程序,除了cookie授权外,一切正常.当用户访问我的站点并登录时,我使用有关该用户的数据设置.ASPAUTH cookie.它运作良好,直到一段时间过去.然后我必须再次登录,即使cookie在浏览器中,我可以看到过期设置为一年后.它在我的localhost上工作正常.在我看来,它不是将我的信息设置为cookie,而是以某种方式在会话中,但即使我在一小时内重新启动计算机,我仍然登录.但如果我不在1小时内访问网络,那么我退出了.
谢谢你的帮助.
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1,
requestedUser.Name,
DateTime.Now,
DateTime.Now.AddYears(1),
true,
string.Format("{0};{1};{2}", requestedUser.IDUser.ToString(), requestedUser.IsAdmin.ToString(), profilePicture));
string encryptedTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
cookie.Expires = keepLogged == "keepLogged" ? DateTime.Now.AddYears(1) : DateTime.Now.AddHours(1);
this.Response.Cookies.Add(cookie);
return RedirectToAction("Index", "Posts");
Run Code Online (Sandbox Code Playgroud)
你需要在web.config中设置像这样的机器密钥
<machineKey validationKey="4B79DF965DC586D2B267BDECB4580D40EE6811EE171AC65D929BECD8865C09ED8681B92F2177FE9F72B8E822B26914C79C1FF590CCEE65469CBC6FACD7D9F203" decryptionKey="CF39BCCD33BC38D17A704DFEB85AD9C5F265669FCD6AB54C" validation="SHA1" />
Run Code Online (Sandbox Code Playgroud)
您可以使用此http://aspnetresources.com/tools/machineKey工具执行此操作,但您必须将其粘贴到web.config中.
每次应用程序池重新启动时,应用程序都会重新启动,如果未在web.config中设置,则会自动生成新的机器密钥.FormsAuthentication cookie使用该计算机密钥进行哈希处理,每次更改时,cookie都将变为无效
| 归档时间: |
|
| 查看次数: |
363 次 |
| 最近记录: |