我正在尝试使用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 :(得分: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
}
使用 可验证 更改 可验证 。