簡體   English   中英

在jsp登錄頁面中記住我/保持登錄狀態

[英]Remember me/stay logged in, in jsp login page

我有一個登錄屏幕,我想通過檢查數據庫中的憑據來對用戶進行身份驗證。 我知道大多數瀏覽器都可以記住密碼,但是如何使用瀏覽器Cookie來實現“記住我”復選框? 我正在使用sign.jsp和Auth servlet(doPost)以及帶有https的基本訪問身份驗證。

我知道我需要將userid +令牌存儲到cookie中。 我從另一個線程找到了以下代碼。

在您的Servlet響應處理程序(doPost,doGet等)中,以以下方式創建cookie:

if(remember_me_is_checked)
{
    Cookie c = new Cookie("userid", userId.toString());
    c.setMaxAge(24*60*60);
    response.addCookie(c);  // response is an instance of type HttpServletReponse
}

要閱讀它們,您可以使用類似以下內容的內容-

Cookie[] cookies = request.getCookies();     // request is an instance of type 
                                             //HttpServletRequest
boolean foundCookie = false;

for(int i = 0; i < cookies.length; i++)
{ 
    Cookie c = cookies[i];
    if (c.getName().equals("userid"))
    {
        string userId= c.getValue();
        foundCookie = true;
    }
} 

我的問題是,在將用戶信息存儲到cookie中之后,當用戶下次登錄時如何自動登錄用戶? 我不了解的是,我僅將用戶的登錄ID存儲在cookie中,如何在沒有密碼的情況下登錄用戶。 我可以使用哪種方法?

如果可能,請具體說明或提供一些代碼。 我對這種東西真的很陌生。

最好的祝福

僅在cookie中存儲用戶ID是不夠的。 我看到的最簡單的解決方案是將某種密碼哈希與用戶ID一起存儲。

輸入用戶名+ some_secret_string +密碼。

從中計算出哈希函數。

將用戶標識和計算的哈希值推送到cookie。

當用戶返回時,您將獲得2個字符串。

根據用戶標識,您將從數據庫中獲取密碼。

再次計算哈希函數。

將計算得出的哈希值與Cookie中的哈希值進行比較。

如果它們匹配-用戶再次登錄。

通常,我們在令牌中存儲令牌 -狀態信息,以確定是否以用戶身份登錄。 (請勿將密碼和其他憑據存儲在cookie中)。

我建議您使用filter 在doFilter()方法中,讀取cookie,並根據cookie的值或cookie的可用性,您可以對請求進行身份驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM