2013-04-09 40 views
1

我使用四郎,以確保我的應用程序,而現在的問題是我如何與哈希密碼登錄了以下情況:四郎 - 如何與哈希密碼登錄

1,自動登錄的用戶,他們點擊後,激活郵件。

2,通過Facebook登錄,從數據庫中找到facebookId用戶,並嘗試登錄的,但我已經是散列passwrod,我們有沒有辦法來解密哈希密碼。

這是我如何加密我的密碼存儲在數據庫中:

new Sha256Hash(password).toHex() 

下面是我的登錄代碼。

Subject currentUser = SecurityUtils.getSubject(); 
if (!currentUser.isAuthenticated()) { 
    UsernamePasswordToken token = new UsernamePasswordToken(email, password, rememberMe); 
    currentUser.login(token); 
} 

如果這個問題很奇怪,並提前致謝,請與我聯繫。

回答

0

散列函數的目的是爲不可解密。所以不,它不能被解密。要實現這兩個目標,您可以配置其他領域。一個用於電子郵件激活,另一個用於oauth登錄。

對於電子郵件激活您可以創建臨時帳戶,創建一些隨機激活令牌和發送電子郵件。然後用戶點擊激活鏈接和應用程序試圖在http請求提供憑證來驗證用戶:這個令牌

String token = //get from request 
subject.authenticate(new ActivationToken(token)); 

激活境界檢查是否是有效的。如果有效,它會從帳戶中刪除令牌並對其進行驗證。

至於你可以使用祕密通過OUTH認證步驟獲得獲得用戶信息,如果沒有誤差修改驗證用戶的Facebook的境界。

+0

很清楚,正是我想要的,非常感謝。 – gozizibj 2013-04-10 04:17:14

0

默認情況下,從UsernamePasswordToken密碼散列和比較結果與DB哈希值。 你可以改變你的境界。沒有做哈希。

對於常用的登錄就可以使密碼散列並投入UsernamePasswordToken。在領域只有比較哈希