2016-12-30 15 views
0

保護された$ redirectTo = '/ tasks'を変更しました。 LoginControllerとRegisterControllerの両方で使用できます。Laravel 5.3でログインとログアウト後にリダイレクトパスを変更するにはどうすればよいですか?

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

    return $next($request); 
} 

私はこれらの変更を行っている、何も動作し、ページが/ログインパスにリダイレクトされているにもかかわらず: はまた、私は次のようにRedirectIfAuthenticatedミドルウェアにリダイレクトパスを変更しました。

答えて

0

これは、ログイン後に$redirectToが有効になるためです。まずログインする必要があります。それが/loginパスに送信されている理由です。したがって、LoginまたはRegistrationの後にリダイレクトする場所を変更する場合は、その変更する$redirectToのプロパティを変更します。ユーザーがまったくログインしないようにするには、そのルートのauthミドルウェアを削除する必要があります。

EDIT: あなたが見逃したことは、目的のページにリダイレクトされ、何もない場合は$ redirectToにリダイレクトされることです。だからあなたがホームページに行くと、それが認証されたユーザーを必要とするならば、それはログインしようとしていた場所であるため、/ homeではなくホームページにリダイレクトされます。あなたがいつもそのパスにリダイレクトしたいと思って、意図したパスではないなら、あなたは以下のように何かをすることができます。

protected function sendLoginResponse(Request $request) 
{ 
    $request->session()->regenerate(); 

    $this->clearLoginAttempts($request); 

    return redirect()->to($this->redirectTo); 
} 

あなたLoginControllerにこのコードを追加すると、常に$redirectToにリダイレクトされます。

+0

私は、/ tasksパスにリダイレクトしたいだけです。それはどうやってできますか? – bruce

+0

どういう意味ですか?常にそのパスにリダイレクトされていますか? –

+0

ユーザーが正常にログインしている場合は、そのパスにリダイレクトする必要があります。 /タスク。 – bruce

0

あなたのコードを見た後、私はあなたのIFステートメントが真を返さないことを得ました。あなたは最初にそれを返すのか見なければなりません。また、コードをテストするだけで、条件なしで目的の場所にリダイレクトすることもできます。

また、アプリケーションでログインした後でこのコードをリダイレクトに使用しています。

public function handle($request, Closure $next) 
{ 
    if ($this->auth->check()) { 
     return redirect('/home'); 
    } 

    return $next($request); 
} 
+0

Laravelの公式文書では、$ redirectToプロパティを変更するだけでよいことを示しています。しかし、それはそのようには機能しません。ミドルウェアを変更しても、それは機能していません。私はFarzin Farzanehniaが提案したコードをなぜ入れなければならないのか分かりません。 – bruce

関連する問題