2016-04-23 12 views

答えて

3

私はAuthController.phpにこの機能を追加し、すべてが魔法のように

public function authenticated($request , $user){ 
    if($user->role=='super_admin'){ 
     return redirect()->route('admin.dashboard') ; 
    }elseif($user->role=='brand_manager'){ 
     return redirect()->route('brands.dashboard') ; 
    } 
} 
+1

私は、このメソッドが登録後にユーザーをリダイレクトしないことに言及する価値があると思います。 'authenticated'関数は' AuthenticatesUsers'特性でのみ呼び出されます。 – SlateEntropy

2

Laravelに付属の認証システムを使用している場合は、Auth\AuthControllerredirectPathメソッドを無効にすることができます。

は例えば、これは/account/adminにロール「管理者」と、他のユーザーとユーザーをリダイレクトします:

public function redirectPath() 
{ 
    if (\Auth::user()->role == 'admin') { 
     return "/admin"; 
     // or return route('routename'); 
    } 

    return "/account"; 
    // or return route('routename'); 
} 

また、役割のロジックを管理するために、(5.1.11で導入)Laravel Authorizationを使用することができます。

+0

を任意のredirectPath()関数でリダイレクトすると、このエラーが発生します。Response.php行のErrorException: ヘッダーに複数のヘッダーが含まれている可能性があります。新しい行が見つかりました。 – Salar

+0

リダイレクトを返す必要はありません。 p athe – SlateEntropy

+0

私は名前付きルートを使用したいと思っています。文字列 – Salar

1

あなたは、これは、このようなハンドル関数内ミドルウェアRedirectIfAuthenticated.phpで要求を処理行うことができます固定:

/** 
* Handle an incoming request. 
* 
* @param \Illuminate\Http\Request $request 
* @param \Closure $next 
* @param string|null $guard 
* @return mixed 
*/ 
public function handle($request, Closure $next, $guard = null) 
{ 
    if (Auth::guard($guard)->check()) { 
     if (Auth::user()->role == 'admin') { 
      return redirect('/admin'); 
     }else{ 
      return redirect('/'); 
     } 
    } 

    return $next($request); 
} 
関連する問題