我是laravel的新手 . 我正在尝试登录用户,但每次都会收到以下错误:
SessionGuard.php第439行中的ErrorException:传递给Illuminate \ Auth \ SessionGuard :: login()的参数1必须是Illuminate \ Contracts \ Auth \ Authenticatable的一个实例,给出的数组
这是我的表格:
<form class="form-horizontal" method="post" action="{{ route('login') }}">
{{ csrf_field() }}
<input type="email" class="form-control" name="email" id="email"><br>
<input type="password" class="form-control" name="password" id="password"><br>
<button type="submit" class="btn btn-default">Sign in</button>
</form>
这是我的路线:
Route::post('login/', ['as' => 'login', 'uses' => 'UsersController@login']);
和 UsersController
中的登录方法:
public function login(Request $request){
$this->validate($request, ['email' => 'required|email', 'password' => 'required']);
$user = $request->all();
Auth::login($user);
return redirect('/');
}
谢谢你的帮助
1 回答
如果您想要登录用户,则需要使用
Auth::attempt()
而不是Auth::login()
.所以在你的代码中这将是:
您可以使用Auth::login()手动将现有用户登录到您的应用程序中 . 提供的对象需要是
Illuminate\Contracts\Auth\Authenticatable
的实现,它已在默认的App\User
模型中实现 . 例如,这可能如下所示:您可以在上面链接的文档中阅读有关此内容的更多信息 .