ASP-MVC Forms身份验证 - cookie不会持久化

时间:2008-11-26 15:31:04

标签: asp.net-mvc authentication cookies

我有自己的linq到sql数据库,有一个很好的登录方法,它让我回到用户。

我已经在网上关注了如何将cookie添加到客户端的101个示例。

            FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
                1,
                _u.id.ToString(), 
                DateTime.Now, 
                DateTime.Now.AddDays(14), 
                true, 
                "hi", 
                FormsAuthentication.FormsCookiePath);

        string hash = FormsAuthentication.Encrypt(ticket);

        HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash);   

        if (ticket.IsPersistent) cookie.Expires = ticket.Expiration;

        //Response.Cookies.Add(cookie);

        //FormsAuthentication.RedirectFromLoginPage(_u.name, _remember);
        FormsAuthentication.SetAuthCookie(_u.name, _remember);

确实它确实得到了补充。但是当我检查它时,它的到期时间表示会话结束,而不是指定的两周。因此,当用户在关闭浏览器后尝试返回站点时,他们必须登录。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

导致此特定错误的原因是我将浏览器设置为在关闭时删除Cookie。

答案 1 :(得分:-1)

我遇到同样的问题,我在登录Page_Load时解决了 首先验证User.Identity是否正确
如果是,我们有一个有效的用户!!! if false删除旧cookie(见此链接http://forums.asp.net/t/1227365.aspx/1
   这最后一部分是为了防止新cookie无法正确保存。