【问题标题】:Implementing "Remember me" Functionality in ASP.NET在 ASP.NET 中实现“记住我”功能
【发布时间】:2009-09-29 15:09:38
【问题描述】:

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

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

【问题讨论】:

    标签: asp.net cookies remember-me


    【解决方案1】:

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

    【讨论】:

    • 我在以前的项目中使用了 FormsAuthentication 方法,但想知道是否有其他方法可以实现它。
    【解决方案2】:

    对我来说,解决方案是区分浏览器会话 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。但是如何获得呢?
    猜你喜欢
    • 2011-08-02
    • 2012-08-08
    • 2018-09-05
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 2019-02-16
    • 2018-08-23
    相关资源
    最近更新 更多