Laravel - проверка паролей перед вводом вручную

У меня возникает проблема с ручным протоколированием пользователей с использованием 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?

Ответы

Ответ 1

Попробуйте следующее:

$u = User::where('username', $username)->first();  

if (Hash::check(Input::get('password'), $u->password))
{
    // The passwords match...
}