2017-05-26 31 views
0

PHPとLaravelの新機能です。私はオンラインで検索しようとしますが、私の問題について正しい答えを得ることはできません。私は自分の特定のページにアクセスできるのは、既に認証されている管理者とユーザーだけです。基本的に、すべてのユーザーが最初にログインする必要があります。私のコードをheres。前もって感謝します。ミドルウェアの複数の認証。 Laravel 5.4

HomeController.php

class HomeController extends Controller 
{ 
    /** 
    * Create a new controller instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     $this->middleware('auth:web, auth:admin'); 
    } 

    /** 
    * Show the application dashboard. 
    * 
    * @return \Illuminate\Http\Response 
    */ 
    public function index() 
    { 
     return view('accounts.user.user_dashboard'); 
    } 
} 

auth.php

'guards' => [ 
    'web' => [ 
     'driver' => 'session', 
     'provider' => 'users', 
    ], 

    'api' => [ 
     'driver' => 'token', 
     'provider' => 'users', 
    ], 
    'admin' => [ 
     'driver' => 'session', 
     'provider' => 'admins', 
    ], 
    'admin-api' => [ 
     'driver' => 'token', 
     'provider' => 'admins', 
    ], 
], 
+0

あなたの要件では、ルートミドルウェアを作成して、ユーザーの役割が通常ユーザーか管理ユーザーかを確認する必要があります。 Webミドルウェアまたは管理ミドルウェアの両方を使用することはできません。管理ロールユーザが通常のウェブに自動的にアクセスすることができます。あなたは複数のミドルウェアを置く必要はありません。最良の方法は、コントローラのコンストラクタにないルートで使用することです。 – webDev

+0

ユーザの役割をユーザテーブルからチェックする経路ミドルウェアを定義して、自分で試してみてください。あなたの道ではない簡単な方法をしてください...私はソリューションを投稿するルートミドルウェアを使用して把握できない場合。 – webDev

答えて

0

私はあなたがいるかどうかを確認するためのミドルウェアを作成することができ、ルートファイルで、

Route::group(['middleware' => ['auth']], function(){ 
    Route::get('/dashboard', '[email protected]'); 
} 
+0

ここで、管理役割の定義は? – webDev

0

これを使用ユーザーは特定のミッションかどうか。ここで私はそれをするのに慣れています。

私はスーパーアクセスなどのミドルウェアを作成し、そこにスーパー管理者の論理を書きます。私は、ユーザーとの関係を持つロールテーブルを持っている上記の例では:

class SuperAccess 
{ 
/** 
* Handle an incoming request. 
* 
* @param \Illuminate\Http\Request $request 
* @param \Closure $next 
* @return mixed 
*/ 
public function handle($request, Closure $next) 
{ 
    $response = $next($request); 
    if(Auth::check() && Auth::user()->role->permission == 1000){ 
     return redirect('web/dashboard'); 
    } 
    return $response; 
} 
} 

それから私は、私はsuperAccessは、例えばチェックしておく必要がありミドルウェアはDeviceController

class DevicesController extends Controller 
{ 
public function __construct(){ 
    $this->middleware('auth'); 
    $this->middleware('super'); 
} 

で言うに注意を使用します表。

関連する問題