Доброго времени суток!
Пытаюсь написать свой модуль для работы с пользователями, но застрял на авторизации. В документации всё элементарно:
if (Auth::attempt(['login' => $request->login, 'password' => $request->password]))
return 'Пользователь авторизован';
else
return 'Пользователь не авторизован';
Но в моём случае Auth::attempt постоянно возвращает false, даже когда явно передаю логин и хеш пароля из БД
Auth::attempt(['login' => 'login', 'password' => 'f394h0wxfc9t54hgdc78w9f...']) <= pbkdf2-хеш пароля длинной 75 символов
Запись с таким логином и паролем в БД есть. Хеши паролей (вывожу из БД и сгенерированный в своём методе авторизации) совпадают полностью. Регистр в названиях полей соблюдается.
Так же столкнулся с такой проблемой: изначально в БД поле password имело имя pass, но Auth::attempt выдавал ошибку "не определено password", добавление
public function getAuthPassword() {
return $this->pass;
}
в модель пользователя ничего не давало. Как указать свой набор полей в Auth::attempt?
Метод авторизации:
public function login(Request $request) {
$user = User::whereLogin($request->login)->first();
$user_db_pass = hash_pbkdf2("sha256", $request->pass, $user->salt, 1000, 75);
//dd(Auth::attempt(['login' => 'admin', 'password' => 'c0b6de9afb4a16e83cba60e5946a87d84a6333f7064237126c0e58aa03699d86e43965e643a']));
if ($user->password == $user_db_pass) {
if (Auth::attempt(['login' => $request->login, 'password' => $user_db_pass]))
return redirect()->intended(route('users.profile'));
else
return $user->password.'<br>'.$user_db_pass;
}
}