Laravel 5.2 新特性系列 -- 中间件组的定义及使用
不管你创建的Laravel应用体量有多大,路由文件 routes.php的体积都会随之变得越来越大。对我而言创建一个新应用首先要做的就是根据业务逻辑对路由文件进行拆分和分组,比如“admin”、“auth”、“public”等。通常分组的每个部分都有其对应的中间件设置,例如, admin会用到一个 auth中间件,API分组可能会有不同的 auth中间件,并且会有指定的限制访问频率的中间件。
Laravel5.2 引入了中间件组的概念,这是一个为路由规则使用多个中间件的快捷方式,只需要定义一个中间件组key即可。
注:即使你不想使用中间件组,也可以继续往下看,因为这是Laravel全局中间件堆栈的一次重大改变。
所以还记得上面提到的admin的那个例子吗?现在我们可以为其创建一个“admin”中间件组,下面我们就来细说如何创建并使用中间件组。
1、定义中间件组
你可以在 app\Http\Kernel.php中定义中间件组,该类中有个新数组属性 $middlewareGroups,该数组的键是中间件组的名字,值是对应的中间件。
Laravel默认为我们提供了 web和 api中间件组:
protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, ], 'api' => [ 'throttle:60,1', ],];
正如你所看到的, $middlewareGroups的键可以是中间件类名也可以是指定路由中间件的别名如 throttle或 auth,下面我们来创建 admin中间件组:
protected $middlewareGroups = [ 'web' => [...], 'api' => [...], 'admin' => [ 'web', 'auth', ]];
我们已经定义了 admin中间件组使用 web(另一个中间件组)和 auth(路由中间件别名),就是这么简单!
与Laravel 5.1的不同之处
你可能已经注意到了, web中的中间件就是 Laravel 5.1 及之前版本中被应用到每个路由的中间件,这是一个思想上的重大提升:没有被分配web中间件组的路由将不会有cookies、sessions或者CSRF功能。比如只分配 api中间件组的路由就是这样。
2、使用中间件组
我们已经创建了中间件组,接下来该如何使用它呢?
如果你看过 Laravel 5.2 的 routes.php将会很清楚:
Route::get('/', function () { return view('welcome');});Route::group(['middleware' => ['web']], function () { //});
正如你所看到的,你可以像使用路由中间件一样使用中间件组:既可以设置为指定的中间件,也可以是中间件数组,所以我们可以这样使用中间件组 admin:
Route::group(['middleware' => 'admin'], function () { Route::get('dashboard', function () { return view('dashboard'); });});
就是这么简单!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

文章討論了PHP 5.3中介紹的PHP中的晚期靜態結合(LSB),允許靜態方法的運行時間分辨率調用以更靈活的繼承。 LSB的實用應用和潛在的觸摸

SOLID原則在PHP開發中的應用包括:1.單一職責原則(SRP):每個類只負責一個功能。 2.開閉原則(OCP):通過擴展而非修改實現變化。 3.里氏替換原則(LSP):子類可替換基類而不影響程序正確性。 4.接口隔離原則(ISP):使用細粒度接口避免依賴不使用的方法。 5.依賴倒置原則(DIP):高低層次模塊都依賴於抽象,通過依賴注入實現。

使用PHP的cURL庫發送JSON數據在PHP開發中,經常需要與外部API進行交互,其中一種常見的方式是使用cURL庫發送POST�...

如何在系統重啟後自動設置unixsocket的權限每次系統重啟後,我們都需要執行以下命令來修改unixsocket的權限:sudo...
