【问题标题】:Right way to Implement remember me正确的实施方式记住我
【发布时间】:2015-12-20 21:03:21
【问题描述】:

我正在寻找实现“记住我”复选框的正确方法,但直到现在我还没有找到好的简单解决方案,所以我将代码片段添加在一起。

您能否指导我正确执行此操作的步骤? 我认为 2015 年会是直截了当的..

这些是我做的步骤(我觉得有点笨拙)

  1. 用户尝试登录-如果他输入了正确的用户名和密码,我检查是否存在cookie["rememberMe"]
  2. 如果不是 - 我正在创建一个新 cookie 并将其命名为“rememberMe”

                    var token = Guid.NewGuid();
                    HttpCookie rememberMe = new HttpCookie("rememberMe");
                    rememberMe["username"] = username;
                    BL.SetCookieToken(username, token);
                    rememberMe["token"] = token.ToString();
    

    SetCookieToken 正在将新的 cookie 令牌写入 db- 在 users 表中有一个列“cookieToken”。

  3. 当用户重新打开浏览器时,在pageload 事件中 如果令牌匹配,应用程序会转到 db 并检查特定用户

            protected void Page_Load(object sender, EventArgs e)
            {
                if (Request.Cookies["rememberMe"] != null)
                {
                   var username = Request.Cookies["rememberMe"]["username"];
                   var token = Request.Cookies["rememberMe"]["token"];
                   Guid cookieToken = BL.GetTokenByUserName(username);
    
                   if (cookieToken.ToString() == token)
                   {
                     Response.Redirect("~/Pages/home.aspx");
                   }
               }
           }
    

我这样做对吗?

【问题讨论】:

    标签: asp.net asp.net-mvc


    【解决方案1】:

    这是一个复杂的问题,实际上没有“正确”的答案。如果它对你有用,那么是的,它是正确的。还有其他更好的方法吗?也许。肯定有很多方法可以做到……存储在会话中,存储在 Redis 之类的东西中……

    【讨论】:

    猜你喜欢
    • 2018-07-25
    • 2011-02-05
    • 2021-11-02
    • 2019-03-31
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    • 2017-12-02
    相关资源
    最近更新 更多