2016-08-22 18 views
0

laravelが初めてです。 \(\認証\ SessionGuard ::ログインを照らすために渡さ 引数1)を照明のインスタンスでなければなりません:私は、ユーザーがログインしようとしていますが、私は次のようなエラー毎回取得:SessionGuard.phpラインに439

ErrorExceptionを契約は、認証\認証可能に\、ここで

を指定された配列は、私のフォームです:

<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' => '[email protected]']); 
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'です。 – tkausl

答えて

1

のおかげで、あなたはむしろAuth::login()よりAuth::attempt()を使用したい、その後にユーザーをログインに欠けている場合。

Auth::attempt()は、最初の引数としてキーと値のペアの配列を受け入れます。配列の値は、データベーステーブル内のユーザーを見つけるために使用されます。

だからあなたのコードでは、これは次のようになります。

public function login(Request $request){ 
    $this->validate($request, ['email' => 'required|email', 'password' => 'required']); 
    $user = $request->all(); 
    Auth::attempt($user); 
    return redirect('/'); 
} 

手動でアプリケーションに内の既存のユーザーをログに記録するAuth::login()を使用します。提供されるオブジェクトは、デフォルトのApp\Userモデル内に既に実装されているIlluminate\Contracts\Auth\Authenticatableの実装である必要があります。たとえば、これは次のようになります。

public function manualLogin(){ 
    $user = User::find(1); 
    Auth::login($user); 
    return redirect('/'); 
} 

これについては、上記のリンク先のドキュメントを参照してください。

関連する問題