2015-12-20 76 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