A. *_*ola 2 authentication laravel-5 laravel-5.2
我是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>
Run Code Online (Sandbox Code Playgroud)
这是我的路线:
Route::post('login/', ['as' => 'login', 'uses' => 'UsersController@login']);
Run Code Online (Sandbox Code Playgroud)
和登录方法UsersController:
public function login(Request $request){
$this->validate($request, ['email' => 'required|email', 'password' => 'required']);
$user = $request->all();
Auth::login($user);
return redirect('/');
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助
如果您想登录用户,那么您想使用Auth::attempt()而不是Auth::login().
Auth::attempt()接受一个键/值对数组作为它的第一个参数。数组中的值将用于在数据库表中查找用户。
所以在你的代码中,这将是:
public function login(Request $request){
$this->validate($request, ['email' => 'required|email', 'password' => 'required']);
$user = $request->all();
Auth::attempt($user);
return redirect('/');
}
Run Code Online (Sandbox Code Playgroud)
您将使用Auth::login()手动将现有用户登录到您的应用程序。提供的对象需要Illuminate\Contracts\Auth\Authenticatable是已经在默认App\User模型中实现的 的实现。例如,这可能如下所示:
public function manualLogin(){
$user = User::find(1);
Auth::login($user);
return redirect('/');
}
Run Code Online (Sandbox Code Playgroud)
您可以在我在上面链接的文档中阅读有关此内容的更多信息。
| 归档时间: |
|
| 查看次数: |
9318 次 |
| 最近记录: |