我需要在Gmail中實現驗證碼功能。 如果用戶第一次請求,則不會顯示驗證碼圖像。 但是,如果用戶請求第二次登錄,(用戶第一次輸入了錯誤的密碼)需要顯示驗證碼。如何檢查請求是否來自同一客戶端瀏覽器?
請讓我知道如何檢查請求是否來自同一用戶,以便我可以在我的spring類中實現一些業務邏輯。
我需要在Gmail中實現驗證碼功能。 如果用戶第一次請求,則不會顯示驗證碼圖像。 但是,如果用戶請求第二次登錄,(用戶第一次輸入了錯誤的密碼)需要顯示驗證碼。如何檢查請求是否來自同一客戶端瀏覽器?
請讓我知道如何檢查請求是否來自同一用戶,以便我可以在我的spring類中實現一些業務邏輯。
你爲什麼要將登錄嘗試綁定到具體用戶?如果我是一個男性因子,我想猜測密碼,我會使用可以使用代理的bruteforcer。
每次我有新的IP,所以你的驗證碼不適合我。
在我看來,更好的解決方案是存儲不正確的登錄嘗試計數器。每次有人輸入特定登錄名的錯誤密碼時,都會增加此登錄名的計數器值。如果密碼正確,則將此值設置爲0.如果計數器值大於0,則會顯示您的驗證碼。
令人驚歎的答案Maksim。非常感謝..你已經將我的問題變成了一個非常簡單的解決方案。 – atulsri 2013-04-22 11:18:23
如果我的答案有幫助,可以將其標記爲最佳。 – 2013-04-22 13:06:06
在服務器端(servlet的)創建此會議
session.setAttribute("count",i); //you can use getAttribute() method to check the count.
連接櫃檯HTTP會話中命中HttpSession
HttpSession session = request.getHttpSession();
,並保持計數。您可能需要將會話存儲在服務器端,而在分佈式ENV中,您應該跨服務器同步HTTP會話。您也可以將該信息存儲到客戶端Cookie中。
有一對夫婦的方式做到這一點:
最後兩個項目符號假設您想對錯誤的密碼進行驗證,而不是對不同的請求/頁面重新加載。
以上每種方法都有其優缺點。您需要根據您的需要選擇一種或多種組合或多種組合。
檢查您是否可以使用會話ID。 – 2013-04-22 10:28:00