如何为所有 Lumen 路由使用 auth:api 中间件?

How to use the auth:api middleware for all Lumen routes?

我们有一个带有 Tymon Jwt 包的 Lumen 安装,当我们使用“auth:api”作为中间件名称在路由文件中实现中间件时,它工作正常。

但是我们希望将该中间件自动添加到所有路由中,并且只将几个路由列入白名单以跳过它。它是如何完成的? bootstrap/app.php 中安装了其他全局中间件,但如果我们想使用 auth:api 中间件,我们找不到正确的 class 来调用。

我猜很简单,就是找不到。

要将其应用于所有路由,use a global middleware:

If you want a middleware to be run during every HTTP request to your application, simply list the middleware class in the call to the $app->middleware() method in your bootstrap/app.php file:

$app->middleware([
   App\Http\Middleware\OldMiddleware::class
]);

tymon/jwt-auth 提供 several possible Tymon\JWTAuth\Http\Middleware middleware classes 供您使用。选择最适合您的场景。

(您的中间件可以在内部免除某些路由,在这种情况下,可能使用类似 Request::is('foo/*') 的方法)。

要将其应用于大多数(但不是全部)路线,请将相关路线放在一个路线组中:

$router->group(['middleware' => 'auth:api'], function () use ($router) {
    // most of your routes go here
});

// the handful of non-auth routes go here