asp.net-mvc – 在asp.net mvc中设置为Session的持久cookie到期时间?

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 在asp.net mvc中设置为Session的持久cookie到期时间?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用ASP.NET MVC,并希望能够在返回站点自动记录某人(与该站点完全相同).

用户首次注册登录时,我按如下方式设置cookie:

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
    1,"playerid",DateTime.Now,DateTime.Now.AddMinutes(1),//This will be set to a longer period in live...
    true,Username + "|" + item.PlayerID.ToString(),FormsAuthentication.FormsCookiePath);

string encTicket = FormsAuthentication.Encrypt(ticket);
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName,encTicket));

如果我通过以用户身份登录进行测试,然后查看Firebug中的Cookies选项卡,则将到期时间设置为会话.如果我关闭浏览器然后回到我的网站,我就不再登录了.这是我期望的,因为当浏览器关闭时会话结束(但这不是我想要发生的事情!).

但是,如果我登录并浏览该网站,则过了一分钟后,到期时间不再显示为会话,而是显示为实际日期戳.如果我然后关闭浏览器并返回我的网站,我将自动登录.

总之,似乎我的到期时间设置为会话,直到我规定的实际到期日期通过(在这种情况下为1分钟)并且我在网站上一直处于活动状态(我正在使用滑动到期).

任何想法我如何将我的到期设置为我在FormsAuthentication票证中的陈述(而不是显示为会话)?

解决方法

您应该通过设置 Expires属性来创建存储在客户端硬盘驱动器上的 persistent cookie
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName,encTicket)
{
    // setting the Expires property to the same value in the future
    // as the forms authentication ticket validity
    Expires = ticket.Expiration
};
Response.Cookies.Add(cookie);

确保为cookie和表单身份验证票证指定了相同的到期超时.现在,当您查看FireBug时,您将看到在发布cookie时,将来会设置Expires属性,这将使cookie保持不变并在浏览器重启后继续运行:

Set-Cookie: ASPXAUTH=...; Expires=Tue,15-Jan-2014 21:47:38 GMT; Path=/; HttpOnly

猜你在找的asp.Net相关文章