Как я могу изменить на bcrypt вместо md5 при проверке входа в Laravel Auth - PullRequest
0 голосов
/ 04 октября 2018

Я использую Hesto / multi-auth

После создания нового модуля Auth я смог зарегистрировать пользователя, но когда я пытаюсь войти в систему, используя те же учетные данные, попытка входа не удалась.так что я обновил метод RegisterController.php->create() и изменил шифрование пароля со значения по умолчанию bcrypt на md5 (сохраняя его). Затем я создал другого пользователя, зарегистрировавшись, и тогда вход в систему прошел успешно.

Итак, чтобы понять этот вопрос: моя версия laravel сравнивает «пароль» с использованием шифрования md5 при входе в систему / проверке пароля.Но я хочу продолжать использовать bcrypt для регистрации и входа (в обоих случаях).Как мне изменить метод входа в систему, чтобы использовать bcrypt вместо md5?

Моя версия Laravel: 5.5.28

protected function create(array $data)
{
    return Shopowner::create([
        'name' => $data['name'],
        'email' => $data['email'],
        //'password' => bcrypt($data['password']),
        'password' => md5($data['password']),
    ]);
}

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Решение:

Хотя это не похоже на собственный код laravel.но кто-то изменил его ядро, чтобы оно работало с md5 вместо bcrypt

в \vendor\laravel\framework\src\Illuminate\Auth\EloquentUserProvider.php [###] была строка с комментариями и добавлены новые блоки if для работы с md5

/**
 * Validate a user against the given credentials.
 *
 * @param  \Illuminate\Contracts\Auth\Authenticatable  $user
 * @param  array  $credentials
 * @return bool
 */
public function validateCredentials(UserContract $user, array $credentials)
{
    $plain = $credentials['password'];

    /* MD5:: This block is custom and added to work with md5 */
    /* ======================== */
    if(md5($plain) == $user->getAuthPassword())
    {
        return true;
    }
    else{
        return false;
    }
    /* ======================== */

   /* Bcrypt:: This line is proper to work with default bcrypt */
   //### return $this->hasher->check($plain, $user->getAuthPassword());
}
0 голосов
/ 04 октября 2018

Моя версия laravel сравнивает «пароль» с использованием шифрования md5 при входе в систему / проверке пароля.Но я хочу продолжать использовать bcrypt для регистрации и входа (в обоих случаях).

В вашем файле config/hashing.php измените драйвер на bcrypt

Как мне изменить метод входа в систему, чтобы использовать bcrypt вместо md5?

В вашем RegisterController используйте функции Hash::make($data['password']); вместо bcrypt или md5, чтобы гарантировать хеширование пароляиспользуя ваш драйвер

...