2016-02-13 8 views
6

これはlaravelパッケージで初めての試みで、ログインコントローラ内でAuth :: attempt($ credentials)が動作する問題に遭遇しましたが、保護されたルートまたはコントローラへのリダイレクト時に、ユーザーはもはや認証されません。以下はダッシュボードへのリダイレクトをコメントアウトしたログインコントローラメソッドです。ユーザー認証がLaravelパッケージ内に残っていません

public function attempt(Request $request){ 

    $email = strtolower(strip_tags(htmlspecialchars($request->input('email')))); 
    $password = strip_tags(htmlspecialchars($request->input('password'))); 

    if (Auth::attempt(array('email' => $email, 'password' => $password))) 
    { 
     // Redirect to dashboard route 
     //return redirect()->intended('/admin'); 
     if(Auth::check()) 
      print_r(Auth::user()); 
    } 
} 

有効な資格情報への応答が正しいユーザーレコードを出力し、Auth :: checkがtrueを返します。しかし、管理コントローラにリダイレクトされると、ユーザは認証されません。以下は、認証されたユーザを出力するが、「記録されない」だけを返すadminコントローラメソッドです。

public function index() 
{ 
    if(Auth::check()) print_r(Auth::user()); 
    else echo "not logged"; 
} 

両方のコントローラが認証を使用;,彼らの名前空間は、ベンダー/パッケージ/ pathToDirと一致している、dbが正しく設定され、暗号化キーが設定されています。何がうまくいかないかに関するアイデアは?ありがとう

答えて

14

は問題が、新しいウェブミドルウェアとしたルートグループへのセッションのデータを必要とするすべての私のルートを移動し、すべてが通常通りに動作してオンにします。

Route::group(['middleware' => ['web']], function() { 

    Route::get("/login", ['uses'=>'[email protected]']); 
    Route::post("/login", ['uses'=>'[email protected]']); 
    Route::get("/logout", ['uses'=>'[email protected]']); 

    Route::group(['prefix' => 'admin', 'middleware' => 'auth'], function() { 
     Route::get('/', ['uses'=>'[email protected]']); 
    }); 
}); 
+1

あなたは私の一日を保存しました! 'routes/web.php'内のデフォルトルートについては、Laravelは" web "というミドルウェアグループ全体を適用します。 このグループは、サービスプロバイダのメソッド '$ this-> loadRoutesFrom(__ DIR __。 '/ routes.php');によってロードされた外部パッケージルートには適用されません。 –

0

メソッドの試行のデフォルトの動作は、ユーザーをログに記録しないことです。

あなたはそれを変更する必要があります。

if (Auth::attempt(array('email' => $email, 'password' => $password), false, true)) 

あなたはrememberとして偽とlogin真として設定されます。この道を。ここではこれについての詳細

チェック:https://laravel.com/docs/5.2/authentication

関連する問題