【问题标题】:How to use the auth:api middleware for all Lumen routes?如何为所有 Lumen 路由使用 auth:api 中间件?
【发布时间】:2019-12-14 10:32:54
【问题描述】:

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

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

我想这很简单,但找不到。

【问题讨论】:

    标签: laravel lumen


    【解决方案1】:

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

    如果您希望在对应用程序的每个 HTTP 请求期间运行中间件,只需在 bootstrap/app.php 文件中的 $app->middleware() 方法调用中列出中间件类:

    $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
    

    【讨论】:

    • 我们制作了自己的中间件,扩展了 Tymon\JWTAuth\Http\Middleware\BaseMiddleware,看起来效果不错。谢谢。
    猜你喜欢
    • 2019-11-30
    • 2017-04-04
    • 1970-01-01
    • 2019-05-14
    • 2016-02-27
    • 2017-05-30
    • 2018-02-10
    • 2021-07-22
    • 2017-12-05
    相关资源
    最近更新 更多