使用Laravel 5进行身份验证时出现问题

时间:2015-08-15 02:24:06

标签: mysql 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

我不知道我哪里做错了

2 个答案:

答案 0 :(得分:7)

  

论证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 
{

}

答案 1 :(得分:1)

@Gaetan你得到这个未找到错误,因为你正在使用     
使用Illuminate \ Contracts \ 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
}

使用 可验证 更改 可验证