3

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

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

4

2 回答 2

3

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

于 2009-09-29T15:11:50.977 回答
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);
    }
于 2012-10-25T16:59:52.690 回答