2013-04-09 73 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。在领域只有比较哈希