1. 介绍
使用 Laravel 框架开发时候,我们经常会用到中间件,中间件是一种用来处理 HTTP 请求的方式。Laravel 框架提供了很多中间件功能,包括指定请求方法、身份验证和 CSRF 保护等。本文将主要介绍 except 和 only 两种路由中间件。
2. except 中间件
2.1 列表排除指定路由
假设我们需要在所有路由中排除一些路由,我们可以使用 except 指定这些路由。以下示例显示如何在所有路由中排除指定路由:
Route::middleware(['checkToken', 'lang'])->except(['profile', 'account']);
上述代码表示在所有路由中排除 profile 和 account 路由。
2.2 排除指定路由中的中间件
除了排除所有路由以外,我们还可以使用 except 排除指定路由中的中间件。以下示例显示如何从指定路由中排除中间件 auth:
Route::get('/home', function () { return view('home');})->middleware('auth');Route::get('/profile', function () { return view('profile');})->middleware('auth')->except(['profile']);
如上代码所示,排除了 profile 路由的中间件 auth。
3. only 中间件
3.1 列表指定路由
与 except 相反,我们可以使用 only 指定需要的路由。以下示例显示如何指定路由:
Route::middleware(['checkToken', 'lang'])->only(['profile', 'account']);
上述代码表示只在 profile 和 account 路由中指定中间件。
3.2 指定路由的中间件
如果只希望为指定路由添加中间件,可以使用 only 方法。以下示例显示如何为 profile 路由指定中间件:
Route::get('/profile', function () { return view('profile');})->middleware(['auth', 'checkToken'])->only(['profile']);
如上所示,使用 only 为 profile 添加中间件。这意味着在所有路由中,除 profile 以外的路由将不会使用 checkToken 中间件。
4. 总结
以上文档简单介绍 Laravel 中的路由中间件的 except 和 only。