laravel Hash :: make keep给出不同的结果

时间:2014-06-24 20:58:51

标签: php laravel laravel-4 blade

我想在laravel 4中使用身份验证 我更改了表格和mobel的名字

当用户注册时,我有密码并保存,哈希是:

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

然后当用户登录时我想先验证他/她。我这样做:

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

并且永远不会成功。我试图调试代码,似乎Hask::make函数总是给出不同的结果。

我是否使用了良好的身份验证方法?该哈希函数的解决方案是什么?

非常感谢

2 个答案:

答案 0 :(得分:4)

首先,在尝试时不要使用Hash,它应该是这样的:

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

由于您使用Hash::make()进行哈希并手动将密码粘贴到数据库中,因此您手动将密码存储在数据库中。所以这可能是个问题。将密码重新输入数据库并以实用方式插入,然后重试。

此外,您可以使用Hash::check('password', $hashedPassword)检查密码。在Laravel网站上详细了解security。使用迁移来填充虚假数据,不要手动将任何数据放入数据库。

答案 1 :(得分:2)

不要在auth :: attempt()函数中散列密码,代码应如下所示:

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

auth :: attempt()将对密码进行哈希处理,然后检查它是否与存储在数据库中的密码相匹配