我想在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
函数总是给出不同的结果。
我是否使用了良好的身份验证方法?该哈希函数的解决方案是什么?
非常感谢
答案 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()将对密码进行哈希处理,然后检查它是否与存储在数据库中的密码相匹配