2017-07-25 122 views
2

目前添加驗證我在路由文件中使用此:Laravel中間件認證

Route::middleware(['auth'])->group(function() { 
}); 

但我想還需要檢查不同的路線,如果用戶是管理員,所以現在我做到這一點,有一個自定義中間件文件:

Route::middleware(['auth', 'admin'])->group(function() { 
}); 

//

<?php 

namespace App\Http\Middleware; 

use Closure; 

class Admin { 

    public function handle($request, Closure $next) 
    { 

     if (Auth::check() && Auth::user()->isAdmin()) 
     { 
      return $next($request); 
     } 

     return redirect('dashboard'); 

    } 

} 

這一切工作正常,但我採用t注意到他API中間件,它使用這樣的:

Route::middleware('auth:api')->get('/user', function (Request $request) { 
    return $request->user(); 
}); 

問題

  1. 如何我可以做一個命名空間的權威性中間件,如API一個'auth:admin'
  2. 哪裏文件位於該設置'auth:api'中間件,我找不到它在應用程序文件夾中的任何地方
  3. 是否有任何其他方式來執行多個身份驗證,如編輯文件config/auth.php然後分離兩個表之間的用戶,一個用於管理員,另一個用於其他用戶。

回答

0

auth中間件接受一個參數,它是要使用的警衛。正如你在Illuminate\Auth\Middleware\Authenticate中看到的那樣。您可以添加custom auth guards。所以你可以創建auth:admin如果你願意。但我確實認爲使用一箇中間件來驗證用戶是誰(身份驗證)而另一個用來驗證用戶是否被允許訪問他/她想訪問的頁面(授權)是完全正確的。