2015-08-15 3 views
1

Я пытаюсь войти в систему пользователя с Laravel 5. Вот мой контроллерПроблемы с аутентификацией с Laravel 5

public function postLogin(LoginRequest $request){ 

     $remember = ($request->has('remember'))? true : false; 

     $auth = Auth::attempt([ 
      'email'=>$request->email, 
      'password'=>$request->password, 
      'active'=>true 
     ],$remember); 

     if($auth){ 
      return redirect()->intended('/home'); 
     } 
     else{ 
      return redirect()->route('login')->with('fail','user not identified'); 
     } 

    } 

Когда я ввести неправильные учетные данные, все работает отлично, но когда я вписываю правильный, я получил сообщение об ошибке:

ErrorException in EloquentUserProvider.php line 110: 
Argument 1 passed to Illuminate\Auth\EloquentUserProvider::validateCredentials() must be an instance of Illuminate\Contracts\Auth\Authenticatable, instance of App\Models\User given, called in C:\xampp\htdocs\Projects\Pedagogia\Admin.pedagogia\vendor\laravel\framework\src\Illuminate\Auth\Guard.php on line 390 and defined 

Я не вижу, где я сделал неправильно

+0

Как вы ссылаетесь на класс 'Auth' в верхней части вашего контроллера? – Jeemusu

+0

Да, я ссылаюсь на класс Auth в верхней части контроллера. –

ответ

5

Аргумент 1 прошел для подсвечивания \ Auth \ EloquentUserProvider :: validateCredentials() должен быть экземпляр Illuminate \ Contracts \ Auth \ Authenticatable, экземпляр App \ Models \ User given.

validateCredentials() метод Illuminate\Auth\EloquentUserProvider класса ожидает экземпляр Illuminate\Contracts\Auth\Authenticable, но вы передаете его экземпляр App\Models\User. Проще говоря, ваша пользовательская модель должна реализовать интерфейс Illuminate\Contracts\Auth\Authenticable для работы с лесами Laravels.

Ваша App\Models\User модель должна выглядеть следующим образом:

use Illuminate\Contracts\Auth\Authenticatable; 
use Illuminate\Auth\Authenticable as AuthenticableTrait; 

class User extends \Eloquent implements Authenticatable 
{ 

} 
+0

Я сделал это, но у меня появилось еще одно сообщение об ошибке: «Illuminate \ Contracts \ Auth \ Authenticable» не найден –

+0

Спасибо @Jeemusu. Я больше не вижу эту ошибку, но все же должен заставить ее работать, потому что, когда я делаю вход, они верны, но я получил dd ($ aut) false –

+0

dd() ваши входные переменные, убедитесь, что они получены. – Jeemusu

1

@Gaetan вы получаете это не найдена ошибка, потому что вы используете
использования Осветите \ Контракты \ Auth \ Authenticable
вместо используя
использование Illuminate \ Contracts \ Auth \ Authenticatable;

вы модель пользователя должна быть такая:

use Illuminate\Database\Eloquent\Model; 
use Illuminate\Contracts\Auth\Authenticatable; 
use Illuminate\Auth\Authenticatable as AuthenticableTrait; 

class User extends Model implements Authenticatable 
{ 
// your code here 
} 

изменения Authenticable с его подлинность.

Смежные вопросы