laravel Hash::使不断给出不同的结果


laravel Hash::make keep giving a different results

我正在尝试在laravel 4 中实现身份验证

当用户注册时,我对密码进行散列并保存,如下所示:

$password = Hash::make(Input::get('password'));

然后,当用户尝试登录时,我想用以下代码对他/她进行身份验证:

if (Auth::attempt(array('username' => Input::get('username'), 'password' => Hash::make(Input::get('password')))))
{
    return Redirect::intended('dashboard');
}

而这永远不会成功。我试着调试代码,似乎Hash::make函数总是给出不同的结果。

我是否使用了良好的身份验证方法?

不要Hash您给Auth::attempt方法的密码,它应该是这样的:

Auth::attempt(array('username' => Input::get('username'), 'password' => Input::get('password')));

您也可以使用Hash::check('password', $hashedPassword)检查密码。在Laravel网站上阅读有关安全的更多信息。

不要在auth::attempt((函数中对密码进行散列,代码应该是这样的:

Auth::attempt(array('username' => Input::get('username'), 'password' => Input::get('password')));

auth::attempt((将散列密码,然后检查它是否与存储在数据库中的密码匹配

为了给答案添加一些解释,每次都会有所不同,因为哈希算法bcrypt会生成一个必须用于解密密码的随机字符串(salt(。

这是为了保护密码免受彩虹表攻击。https://en.wikipedia.org/wiki/Rainbow_table