2015-08-15 126 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给出的实例。

Illuminate\Auth\EloquentUserProvider类的validateCredentials()方法预计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

我做到了,但我收到另一个错误信息,说Interface'Illuminate \ Contracts \ Auth \ Authenticable'找不到 –

+0

谢谢@Jeemusu。我再也看不到这个错误了,仍然要让它工作,因为当我dd输入他们是正确的,但我得到dd($ aut)false –

+0

dd()你的输入变量,确保它们正在接收。 – Jeemusu

1

@Gaetan你得到这个没有发现错误,因为你使用的是
使用照亮\ \合同验证\真伪
代替使用
使用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 
} 

变化真伪可验证