У меня есть приложение Laravel 4, в котором я настроил одного пользователя. В моем логин-логике я звоню Auth::attempt
с адресом электронной почты и паролем, но он всегда возвращается как ложный. У меня определенно правильный пароль и правильный хэш в базе данных, так как Hash::check
возвращает true.Laravel 4 аутентификация не работает
Я думаю, что это может быть связано с использованием email
в качестве поля входа вместо username
, но я не вижу никаких настроек для этого. This question подразумевает, что вы можете добавить опцию в config/auth.php
, но это не сработало. This question говорит использовать ключ username
как ключ массива, но затем я получаю ошибку SQL, потому что он пытается выбрать в поле имя пользователя в базе данных.
Нужно ли добавить что-то в модель пользователя, чтобы указать поле имени пользователя? Вот мой логин:
Route::post('login', function() {
// data from login form
$credentials = array(
'email' => Input::get('email'),
'password' => Input::get('password')
);
$auth = Hash::check(Input::get('password'), Hash::make('mypass'));
var_dump($auth); // this is TRUE
// login was good
$auth = Auth::attempt($credentials);
var_dump($auth); // this is FALSE
});
Ключ массива должен соответствовать столбцу, который используется для аутентификации пользователей в базе данных. Это упоминается в [docs] (http://four.laravel.com/docs/security#authenticating-users). Вы изменили модель 'User' по умолчанию, с которой поставляется L4? –