Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Добрый вечер! Не работает авторизация. Не могу понять почему. Ошибок не выдает.
Route::post('authorization', function()
{
$login = Input::get('login');
$pass = Input::get('password');
//echo $login;
//print_r($user);
if (Auth::attempt(array('login' => $login, 'password' => $pass), true)) {
return "asd"; //не попадаю в этот if
}
});
Модель Users по стандарту, никаких изменений не вносил. В таблице users есть токен и таймстампы. Файл app/config/auth.php тоже настроен по стандарту. Подскажите в чем проблема.
пользователь с таким логином есть ? пароль в базе сохранён как хэш ?
Не в сети
пользователь есть а вот логин не как хэш, в этом проблема?
Не логин, а пароль. Пароли в открытом виде в базе хранить нельзя, поэтому встроенная авторизация заточена на то, что пароль в базе хранится в зашифрованном виде. При регистрации делай $user->password = Hash::make($password);
Не в сети
Спасибо. Пока что вылазить Whoops, looks like something went wrong. Вопрос еще такой. А если я в базу заносил инфу не через форму регистрации а sql запросом в phpmyadmin нормально будет или надо обязательно через форму?
Если ты занесешь через phpmyadmin в поле password хэш пароля в том виде, каком его генерит laravel, то норм.
Если там пароль в открытом виде - конечно нет.
Чтобы получить полный текст ошибки поставь в config/app.php 'debug'=>true
Не в сети
debug стоит. В том то и дело что ошибки никакой нету.
if (Auth::attempt(array('login' => $login, 'password' => $pass), true)) {
return "asd"; //не попадаю в этот if
}
Получается что Auth::attempt() всегда возвращает false, потому что если поставить else то будет всегда в него попадать. Я думаю все таки проблема в хэше. Вечером попробую. Спасибо большое за ответ.
А вот и ошибка ))
Argument 1 passed to Illuminate\Auth\EloquentUserProvider::validateCredentials() must be an instance of Illuminate\Auth\UserInterface, instance of User given, called in D:\OpenServer\domains\laravel\vendor\laravel\framework\src\Illuminate\Auth\Guard.php on line 370 and defined
Модель User точно по стандарту? Она должна implements UserInterface - https://github.com/laravel/laravel/blob … ser.php#L8
Изменено slider23 (30.09.2014 14:36:37)
Не в сети
Было не по стандарту. Рабочий комп наверно изменил ее когда то. Теперь все работает. Спасибо большое. Получается не работало из за хэша.
Добрый день!
Есть функция
public function postLogin(){
$rules = array('username'=>'required|email', 'password'=>'required');
$validator = Validator::make(Input::all(), $rules);
if($validator->fails()){
return Redirect::route('user-login')->withErrors($validator);
}
$credentials = array('email' => 'admin@mail.ru', 'password' => '123456');
if (Auth::attempt($credentials))
{
return Redirect::to('/');
}
else {
return Redirect::route('user-login')->withErrors(array('Ошибка авторизации'));
}
}
при попытке авторизоваться всегда попадаю в else.
Читал вверху но малость не понял где и что нужно поменять?
Разобрался где поменять но все как файле на гихабе.
Разобрался где поменять но все как файле на гихабе.
Вопрос решился проблема была в том, что в таблице поле password было varchar(50), а должно быть varchar(225).
Страницы 1