2017-02-19 7 views
0

をクリックし、[戻る]ボタンの後に/ホームにリダイレクト:管理者は、私はこの管理ミドルウェア持っ

public function handle($request, Closure $next, $guard = null) 
{ 
    if (Auth::check()) { 
     if ($request->user()->is_admin == 1) { 
      return $next($request); 
     } 

     return redirect('/login'); 
    } else { 
     return redirect('/login'); 
    } 
} 

を、ユーザーが管理者である場合logincontrollerで、それらは/admin.にリダイレクトされ、/home.

にリダイレクトされていない場合
protected function authenticated() 
{ 
    if (auth()->user()->is_admin == 1) { 
     return redirect('/admin'); 
    } else { 
     return redirect('/home'); 
    } 
} 

管理者がログインすると、/adminにリダイレクトされますが、ブラウザの戻るボタンをクリックすると、/homeになります。どうすれば管理者を/homeにリダイレクトできますか。 /homeは、認証ミドルウェアグループの下にあります。あなたがauthenticatedあるためである

答えて

1

この理由はあります。 Laravelはミドルウェアが付属しています

はそうどこか別の場所にリダイレクトした場合、ユーザーがauthentitcatedているかどうかをチェックしてなるRedirectIfAuthenticatedと呼ばれます。

次のようなものであることをそのミドルウェアを編集する必要があります:

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

    return $next($request); 
} 

・ホープ、このことができます!

0

。戻るボタンを押すとから/loginに戻りますが、ビューを呼び出す前にユーザーがどこにログインしているかがチェックされます。あなたがログアウトしていないと、ログインしているので、あなたはパス/home をデフォルトにリダイレクトされます。..

したい場合は、この行

protected $redirectTo = '/home'; 

を見ることができるLoginControllerはありAuthフォルダにロジックを追加するにはここで変更することができます。これはデフォルトのパスです。そのユーザが現在認証されているので、

関連する問題