2015-12-20 75 views
0

我正在寻找正确的方式来实现“记住我”复选框,直到现在我没有找到好的&简单的解决方案,因此我已经将代码段加在一起。正确的方式实现记住我

你可以请直接指导我做正确的步骤吗? 我认为,在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事件 应用进入数据库,并检查是否有特定的用户,如果令牌匹配

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

我做的是正确的办法?

回答

1

这是一个复杂的问题,实际上没有“正确的”答案。如果它为你工作,那么是的,这是正确的。还有其他更好的方法可以做到吗?也许。确实有很多方法可以做到这一点...存储会话,存储Redis等内容...

+0

是否有任何内置功能? –

+0

在这里有一个相当不错的convo ... http://stackoverflow.com/questions/24904528/asp-net-mvc-remember-me有没有一个特定的“记住我”功能'内置'我是意识到(并不意味着它不存在),但有很多内置的功能可以帮助实现。 – kevindeleon