Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 14.09.2012 11:03:54

Аутентификация с использованием класса Auth

Пользователь не проходит проверку при аутентификации. Вроде все согласно документации, но функция 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. Имена таблицы и модели указаны верно.

Не в сети

#2 14.09.2012 11:04:59

Re: Аутентификация с использованием класса Auth

В чем может быть ошибка? Сталкивался кто либо с подобными проблемами?

Не в сети

#3 14.09.2012 11:30:56

Re: Аутентификация с использованием класса Auth

Какой SQL выполняет Laravel? Кстати, лучше использовать имя id для первичного ключа (здесь — вместо iduser).

И, пожалуйста, используй [CODE] или %% (вики).

Не в сети

#4 14.09.2012 15:00:19

Cheshirrski
masterМастер
Откуда: Днепр
Сообщений: 116
Статей: 2

Re: Аутентификация с использованием класса Auth

Поле password поставьте varchar(64), в него пишется хэш плюс соль.

Не в сети

#5 17.09.2012 14:47:17

Re: Аутентификация с использованием класса Auth

Для поля password установил атрибуты varchar(64), ни к каким изменениям не привело. К слову в приведенном мной коде хэширование пароля не происходит. Также пробовал использовать id для первичного ключа - результат тот же...

Не в сети

#6 17.09.2012 18:19:54

Cheshirrski
masterМастер
Откуда: Днепр
Сообщений: 116
Статей: 2

Re: Аутентификация с использованием класса Auth

Посмотрите как аботает Auth::attempt. Хэширование пароля происходит там, а затем сравнивается со значением поля password из базы данных.

Не в сети

#7 18.09.2012 10:32:40

Re: Аутентификация с использованием класса Auth

Вы правы, посмотрел исходники laravel\auth\eloquent.php и  laravel\auth\fluent.php. Пробовал различные варианты, в конце концов выкинуло ошибку вида undefined stdClass:$id, изменил имя ключевого поля в таблице на id и все заработало. Почему данной ошибки не получил сначала мне не ясно. Спасибо за помощь.

Не в сети

Подвал раздела