Laravel по-русски

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

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

#1 29.09.2014 22:39:19

Влад

Не работает авторизация

Добрый вечер! Не работает авторизация. Не могу понять почему. Ошибок не выдает.
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 тоже настроен по стандарту. Подскажите в чем проблема.

#2 30.09.2014 06:51:46

Re: Не работает авторизация

пользователь с таким логином есть ? пароль в базе сохранён как хэш ?

Не в сети

#3 30.09.2014 08:23:49

Влад

Re: Не работает авторизация

пользователь есть а вот логин не как хэш, в этом проблема?

#4 30.09.2014 09:24:06

Re: Не работает авторизация

Не логин, а пароль. Пароли в открытом виде в базе хранить нельзя, поэтому встроенная авторизация заточена на то, что пароль в базе хранится в зашифрованном виде. При регистрации делай $user->password = Hash::make($password);

Не в сети

#5 30.09.2014 09:33:48

Влад

Re: Не работает авторизация

Спасибо. Пока что вылазить Whoops, looks like something went wrong. Вопрос еще такой. А если я в базу заносил инфу не через форму регистрации а sql запросом в phpmyadmin нормально будет или надо обязательно через форму?

#6 30.09.2014 12:41:45

Re: Не работает авторизация

Если ты занесешь через phpmyadmin в поле password хэш пароля в том виде, каком его генерит laravel, то норм.
Если там пароль в открытом виде - конечно нет.

Чтобы получить полный текст ошибки поставь в config/app.php 'debug'=>true

Не в сети

#7 30.09.2014 14:20:18

Влад

Re: Не работает авторизация

debug стоит. В том то и дело что ошибки никакой нету.
if (Auth::attempt(array('login' => $login, 'password' => $pass), true)) {
            return "asd"; //не попадаю в этот if
        }
Получается что Auth::attempt() всегда возвращает false, потому что если поставить else то будет всегда в него попадать. Я думаю все таки проблема в хэше. Вечером попробую. Спасибо большое за ответ.

#8 30.09.2014 14:24:06

Влад

Re: Не работает авторизация

А вот и ошибка ))
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

#9 30.09.2014 14:35:00

Re: Не работает авторизация

Модель User точно по стандарту? Она должна implements UserInterface - https://github.com/laravel/laravel/blob … ser.php#L8

Изменено slider23 (30.09.2014 14:36:37)

Не в сети

#10 30.09.2014 15:13:52

Влад

Re: Не работает авторизация

Было не по стандарту. Рабочий комп наверно изменил ее когда то. Теперь все работает. Спасибо большое. Получается не работало из за хэша.

#11 16.11.2014 16:08:44

Игорь

Re: Не работает авторизация

Добрый день!

Есть функция

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.


Читал вверху но малость не понял где и что нужно поменять?

#12 16.11.2014 16:10:29

Игорь

Re: Не работает авторизация

Разобрался где поменять но все как файле на гихабе.

#13 16.11.2014 16:27:35

Игорь

Re: Не работает авторизация

Игорь пишет:

Разобрался где поменять но все как файле на гихабе.


Вопрос решился проблема была в том, что в таблице поле password было varchar(50), а должно быть varchar(225).

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