Переопределить логин Laravel для использования Crypt

#php #laravel #laravel-5 #eloquent

#php #laravel #laravel-5 #красноречивый

Вопрос:

Я выполняю импорт из старой базы данных, в которой пароли хранятся в виде обычного текста. Я знаю, жестоко. Хотя я хочу сохранить пароли, чтобы они могли расшифровать их после и просмотреть. (Запрос клиентов). Я сохраняю пароль как

 $user->password = Crypt::encryptString($oldUser->Password);
  

Если пользователь войдет в систему, ему нужно будет использовать этот новый Crypt для проверки. У меня есть это, но он продолжает выдавать мне ошибки

 Auth/LoginController


public function login(Request $request)
     {
        $user =   User::where('username', $request->username)
                     ->where('password',Crypt::encryptString($request->password))
                     ->first();
        Auth::login($user);
        return redirect('/');
     }




Users Model:
class User extends Authenticatable
  

Ошибка:

Аргумент 1, переданный в IlluminateAuthSessionGuard::login() должен реализовывать интерфейс IlluminateContractsAuthAuthenticatable, задается значение null, вызывается в

Комментарии:

1. Похоже, ваш User запрос ничего не возвращает. Есть ли действительный пользователь?

2. Если пароли представлены в виде обычного текста, почему бы просто не правильно их хэшировать для каждого пользователя? Если клиент действительно хочет иметь возможность видеть пароли, просто добавьте столбец с «old_password», в котором вы сохраняете зашифрованную версию пароля (которую вы затем удаляете, когда они закончат с этим). Тогда вам не нужно будет каким-либо образом изменять Laravels auth.

3. @MagnusEriksson Я просто не хотел, чтобы кто-то, у кого мог быть доступ к базе данных, просматривал обычный текстовый пароль. Хотя я буду использовать этот подход.