我不知道这是CI还是Bonfire的特定问题,我意识到这不是特定的编程问题,但是它肯定会妨碍我在该环境中进行编码的能力。
Underbonfire/modules/users/controllers/users/
是使用名为的漂亮函数的控制器login()
。我使用该功能和框架功能register()
来满足我所有的登录/注册需求,但是现在当我不得不从头开始进行Facebook登录时,我需要比较两个密码。
问题是我无法比较密码,因为它们被添加了盐的一些时髦的怪异哈希值所哈希,而且我无法弄清楚它们的用途,并且找不到答案!
我的数据库存储哈希值,就像$2a$08$QuJPuhhg.HYh8o7ybGJ1quFe1rvcIo/dRIPJ.iaSbHm5P2qAbPTNy
我知道我不应该比较密码,但在这种情况下,我需要将它们进行比较,因为我正在进行Facebook登录,并且需要查看具有该ID的用户是否已存在于数据库中。在这种情况下,id被存储为用户的密码。
那么,框架使用什么功能来哈希密码?
CI Bonfire使用phpass (发音为“ pH pass”)框架来哈希密码。
当您创建或更新用户时,bonfire使用Auth::hash_password()
方法(在后台加载phpass框架!)来创建哈希密码。
例子
$password = $this->auth->hash_password('password');
$hash = $password['hash'];
$iterations_used = $password['iterations'];
因此,您可以使用相同的算法手动使用该方法对任何字符串进行哈希处理。
也有一个check_password()
在方法验证库,比较两个参数:输入字符串(password
)作为第一个参数和散列密码(hash
)作为第二个。这可能有助于比较目的。
例子
if ($this->auth->check_password('password to check', 'HashedPassword'))
{
// The passwords match
...
}
bool(true)
如果密码和哈希匹配,则返回else false
。
这些方法也记录在《Bonfire用户指南》中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句