Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Пользователь не проходит проверку при аутентификации. Вроде все согласно документации, но функция attempt возвращает false.
//application/config/auth.php
'driver' => 'eloquent',
//'driver' => 'fluent',
'username' => 'nick',
'password' => 'password',
'model' => 'User',
'table' => 'users',
//код контроллера
$nick = Input::get('nick');
$password = Input::get('password');
$credentials = array(
'username' => $nick,
'password' => $password
);
if(Auth::attempt($credentials)){
return 'Заработало!';
}else{
return dd($credentials);
}
Дамп таблицы
CREATE TABLE `users` (
`iduser` int(10) NOT NULL AUTO_INCREMENT,
`nick` varchar(10) NOT NULL,
`password` varchar(20) NOT NULL,
`fio` varchar(128) NOT NULL,
`u_id` bigint(20) NOT NULL,
`descr` text NOT NULL,
`ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`iduser`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
Пробовал eloquent и fluent. Имена таблицы и модели указаны верно.
Не в сети
В чем может быть ошибка? Сталкивался кто либо с подобными проблемами?
Не в сети
Не в сети
Поле password поставьте varchar(64), в него пишется хэш плюс соль.
Не в сети
Для поля password установил атрибуты varchar(64), ни к каким изменениям не привело. К слову в приведенном мной коде хэширование пароля не происходит. Также пробовал использовать id для первичного ключа - результат тот же...
Не в сети
Посмотрите как аботает Auth::attempt. Хэширование пароля происходит там, а затем сравнивается со значением поля password из базы данных.
Не в сети
Вы правы, посмотрел исходники laravel\auth\eloquent.php и laravel\auth\fluent.php. Пробовал различные варианты, в конце концов выкинуло ошибку вида undefined stdClass:$id, изменил имя ключевого поля в таблице на id и все заработало. Почему данной ошибки не получил сначала мне не ясно. Спасибо за помощь.
Не в сети
Страницы 1