laravel框架中间件 except 和 only 的用法示例

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。

后端开发标签