Php Laravel-手动登录前检查密码
使用Php Laravel-手动登录前检查密码,php,laravel,laravel-4,Php,Laravel,Laravel 4,使用Auth::loginUsingId . 在此之前,我需要检查密码是否匹配,这是我的问题。密码比较总是返回false 这就是我将密码保存到DB的方式: $user = User::create([ 'password' => Hash::make(Input::get('password')), ]); 这就是我试图比较这两个密码的方式 $u = User::where('username', $username)->first(); $
Auth::loginUsingId
. 在此之前,我需要检查密码是否匹配,这是我的问题。密码比较总是返回false
这就是我将密码保存到DB的方式:
$user = User::create([
'password' => Hash::make(Input::get('password')),
]);
这就是我试图比较这两个密码的方式
$u = User::where('username', $username)->first();
$password = Hash::make(Input::get('password'));
var_dump($u->password == $password);
这是返回false,我不知道问题出在哪里
编辑:
在DB字段中,varchar的长度为70个字符,hash的长度为60个字符
好的,我注意到:每次Hash::make都会从我的密码中给出另一个字符串。这怎么可能呢?我的意思是,然后如何Auth::trunt
工作?尝试以下方法:
$user = User::where('username', $username)->first();
if (Hash::check(Input::get('password'), $user->password))
{
// The passwords match...
}
结果将包括盐。那么,你看到的价值是什么?比较
$u->password
和$password
时,您得到的确切值是什么?您确定创建时键入的密码与登录时输入的密码完全相同吗?也可以检查Hash::make(“”)的值
并在登录时将其与DB hash value&hash::make(输入::get('password'))
进行比较。另外,FFS也可以使用==
进行比较。我更新了问题,在这里我选中了hash::make
,因为您要求它生成一个新的hash(使用一个新的随机salt)。您不认为应该使用Hash::check()
?