Laravel — не могу войти после обновления пароля

У меня возникла следующая проблема. Я создаю пользователя и пароль с сеялкой. Пользователь создается нормально, а пароль хранится в БД в зашифрованном виде. И я могу войти. Когда я пытаюсь изменить этот пароль, я замечаю, что строка для пароля в БД изменяется (что-то еще зашифровано), но я не могу войти ни с новым паролем, ни со старым.

У меня есть это в модели:

public function setPasswordAttribute($password)
{
$this->attributes['password'] = Hash::make($password);
}

и в контроллере для установки нового пароля у меня это

$user = AuthAction::$user;
$user->password = $subscriberData['password'];
$user->save();

Последнее замечание: модель, которую я использую для пользователя, называется Subscriber, и когда я делаю var_dump переменной $ user, я вижу, что это экземпляр подписчика модели.

0

Решение

Хеширование пароля с помощью Bcrypt в Laravel:

$password = Hash::make('yourpassword');

Это создаст хешированный пароль. Вы можете использовать его в своем контроллере или даже в модели, например, если пользователь отправляет пароль с помощью формы на ваш контроллер, используя метод POST, то вы можете хэшировать его, используя что-то вроде этого:

$password = Input::get('passwordformfield'); // password is form field
$hashed = Hash::make($password);

Вот, $ хэшируются будет содержать хешированный пароль. По сути, вы будете делать это при создании / регистрации нового пользователя, поэтому, например, если пользователь отправляет данные, такие как имя, адрес электронной почты, имя пользователя и пароль и т. Д., Используя форму, то перед тем, как вставить данные в базу данных, вы хеширую пароль после проверки данных. Для получения дополнительной информации прочитайте документацию.

Обновить:

$password = 'JohnDoe';
$hashedPassword = Hash::make($password);
echo $hashedPassword; // $2y$10$jSAr/RwmjhwioDlJErOk9OQEO7huLz9O6Iuf/udyGbHPiTNuB3Iuy

Итак, вы вставите $ hashedPassword в базу данных. Надеюсь, теперь все ясно, и если вы все еще в замешательстве, тогда я предлагаю вам прочитать несколько уроков, посмотреть скриншоты на laracasts.com и tutsplus.com, а также прочитать книгу на Laravel, это бесплатная электронная книга, вы можете скачать ее ,

Обновление: так как OP хочет зашифровать пароль вручную, используя Laravel Hash без какого-либо класса или формы, так что это альтернативный способ, используя ремесленника из командная строка:

Перейти к вашей командной строке / терминалу
Перейдите к установке Laravel (корневой каталог вашего проекта)
Используйте CD и нажмите Enter из командной строки / терминала
Затем напишите php artisan tinker и нажмите ввод
Затем напишите echo Hash :: make (‘somestring’);
Вы получите хешированный пароль на консоли, скопируете его и затем сделаете все, что захотите.
Обновление (Laravel 5.x):

// Also one can use bcrypt
$password = bcrypt('JohnDoe');
0

Другие решения

$user = AuthAction::$user;
$user->password = Hash::make($subscriberData['password']);
$user->save();
0

Это потому, что ваш обновленный пароль был хеширован дважды Один через ваш красноречивый мутатор

а другой через ResetPasswordController.

protected function resetPassword($user, $password)
{
$user->forceFill([
'password' => bcrypt($password),//problem is here, $password was already hashed by eloquent mutator
'remember_token' => str_random(60),
])->save();

$this->guard()->login($user);
}

Вы можете решить эту проблему, переопределив сбросить пароль функция в вашем ResetPasswordController вот так :

protected function resetPassword($user, $password)
{
$user->forceFill([
'password' => $password,
'remember_token' => str_random(60),
])->save();

$this->guard()->login($user);
}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector