[英]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.