Ответ 1
Попробуйте следующее:
$u = User::where('username', $username)->first();
if (Hash::check(Input::get('password'), $u->password))
{
// The passwords match...
}
У меня возникает проблема с ручным протоколированием пользователей с использованием Auth::loginUsingId
. Прежде чем я это сделаю, мне нужно проверить, совпадает ли пароль, и есть моя проблема. Сравнение паролей всегда возвращает false;
Это как я сохраняю пароль для БД:
$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);
И это возвращает ложь, и я не знаю, где проблема.
EDIT: в поле DB varchar имеет длину 70 символов, хэш - 60 символов.
Хорошо, я заметил: каждый раз, когда Hash :: make дает другую строку из моего пароля. Как это возможно? Я имею в виду, как работает Auth::attempt
?
Попробуйте следующее:
$u = User::where('username', $username)->first();
if (Hash::check(Input::get('password'), $u->password))
{
// The passwords match...
}