2016-09-12 14 views
0

有効な資格情報または無効な資格情報を挿入すると、ユーザーは常にRedirectIfAuthenticatedミドルウェアで定義されたルートにリダイレクトされます。私の質問:どのように認証されたユーザーを認証されていないユーザーとは異なるルートにリダイレクトできますか?Laravel 5.3認証:試行がうまくいかない

RedirectIfAuthenticated(ミドルウェア):

public function handle($request, Closure $next, $guard = null) 
    { 
     if (Auth::guard($guard)->check()) { 
      return redirect('/'); 
     } 

     return $next($request); 

これは私のLoginControllerです:

public function __construct() 
    { 
     $this->middleware('guest', ['except' => 'logout']); 
    } 

public function authenticate(Request $data){ 
    if (Auth::attempt(['cnpj' => $data['cnpj'], 'password' => $data['password'] ])){ 
     return redirect()->route('someroute'); 
    } 
    else{ 
     return redirect()->route('login'); 

    } 

ルート:あなたのLoginController

Route::get('/', function() { 
    return view('welcome'); 
}) -> name('/'); 

Route::post('/register', 'Auth\[email protected]'); 

Route::get('/register', function() { 
    return view('auth.register'); 
}); 

Route::get('/login', function(){ 
    return view('auth.login'); 
})->name('login'); 

Route::post('/login', 'Auth\[email protected]'); 

答えて

1

、あなたはに適用するguestミドルウェアを設定していますlogoutを除くすべてのルート。つまり、認証済みのユーザーは、ミドルウェアが既に実行され、ユーザーをリダイレクトしているため、authenticateメソッドにアクセスすることはできません。

最も簡単な修正はguestミドルウェアのための除外にauthenticateメソッドを追加することです:

public function __construct() 
{ 
    $this->middleware('guest', ['except' => ['logout', 'authenticate']]); 
} 

あなたが本当にミドルウェア、ルーティングのLaravelの概念を理解していないことを、あなたの質問から表示されます、および認証。これらの機能に関するドキュメントは、フレームワークにすでに存在する機能を手動で実装しようとしているように見えるため、再読み込みすることを強くお勧めします。

関連する問題