Hash :: check в Laravel 5 не работает, всегда возвращать false? - PullRequest
0 голосов
/ 25 февраля 2019

Я использую проверку хеша для сравнения текущего пароля, который вводится пользователем, и текущего пароля, который хранится в базе данных (Bcrypt)

Вот мой исходный код

    $user = User::findOrFail($request->id);
    if (Hash::check($request->password, $user->password)) { 
       $user->fill([
        'password' => Hash::make($request->newPassword)
        ])->save();

       $request->session()->flash('success', 'Password changed');
        // return redirect()->route('your.route');
       echo "Hash match";

    } else {
        $request->session()->flash('error', 'Password does not match');
        // return redirect()->route('your.route');
        echo "Hash does not matched";
    }

Моя проблема заключается в хэше: проверка всегда возвращает false («хэш не соответствует»)

Я помещаю переменную в проверку хеша следующим образом:

Hash::check(new password plain text, bcrypt value in db)

Перед вызовом проверки хэша.Я пытаюсь напечатать переменную, чтобы выяснить, почему она не работает.Я обнаружил, что мой обычный текст нового пароля уже отправлен, и я уже получил пароль bcrypt из базы данных.Все выглядит хорошо, это должно работать.Я не знаю, в чем моя ошибка.Я следую многим темам на этом сайте, чтобы решить мою проблему, поскольку я пытался, это не работает для меня.Кто-нибудь, пожалуйста, помогите мне.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Вы используете неправильный порядок аргументов.

Попробуйте это ,

if (Hash::check($user->password, $request->password))
0 голосов
/ 25 февраля 2019

Если вы используете это с контроллером входа по умолчанию, предоставленным auth, тогда вам не нужно использовать это.Его автоматически делает сам Laravel.

...