在ASP.NET中实现“记住我”功能

时间:2009-09-29 15:09:39

标签: asp.net cookies remember-me

在ASP.NET网站上实现“remember me”功能的最佳方法是什么?

我应该使用自定义Cookie还是有更简单的方法?

2 个答案:

答案 0 :(得分:3)

您使用的是ASP.NET提供的内置Authenication服务吗?如果是这样,那很容易。

答案 1 :(得分:0)

对我而言,解决方案是区分浏览器会话cookie(不要与asp.net会话cookie混淆)和持久性cookie - 设置低过期将创建持久cookie,这意味着当浏览器被记住时它会被记住在到期时间内关闭并重新开启。以下适用于我:

public void SetAuthenticationCookie(LoginView loginModel)
    {
      if (!loginModel.RememberMe)
      {
        FormsAuthentication.SetAuthCookie(loginModel.Email, false);
        return;
      }
      const int timeout = 2880; // Timeout is in minutes, 525600 = 365 days; 1 day = 1440.
      var ticket = new FormsAuthenticationTicket(loginModel.Email, loginModel.RememberMe, timeout);
      //ticket.
      string encrypted = FormsAuthentication.Encrypt(ticket);
      var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encrypted)
        {
          Expires = System.DateTime.Now.AddMinutes(timeout),
          HttpOnly = true
        };
      HttpContext.Current.Response.Cookies.Add(cookie);
    }