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

3

如何在ASP.NET网站上实现“记住我”功能是最佳方法?

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

2个回答

3

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


我之前在一个项目中使用了FormsAuthentication方法,但想知道是否有其他实现方式。 - lnetanel

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);
    }

这是如何设置AuthenticationCookie的方法。但是如何获取它呢? - MOHAMED ABUELATTA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接