#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 Я просто не хотел, чтобы кто-то, у кого мог быть доступ к базе данных, просматривал обычный текстовый пароль. Хотя я буду использовать этот подход.