Lumen:将中间件添加到打包定义的路由中

Posted

技术标签:

【中文标题】Lumen:将中间件添加到打包定义的路由中【英文标题】:Lumen: add middleware to package defined routes 【发布时间】:2017-10-10 15:41:09 【问题描述】:

我在将中间件添加到供应商包的现有路由时遇到问题。我在 Lumen(Laravel 创建的微服务框架)之上构建了一个 API。我正在使用 Passport 进行 oauth 身份验证并导入了这个包:https://github.com/dusterio/lumen-passport 在 Lumen 中使用 Passport。我已经实现了一个用于请求令牌的自定义路由,并希望阻止对现有护照路由的请求:/oauth/token。但是我自己也需要该路由,以便从我的自定义路由重定向令牌请求。 我试图像这样覆盖现有路线:

$app->post('/oauth/token', [
    'middleware' => 'reject',
    'uses' => '\Dusterio\LumenPassport\Http\Controllers\AccessTokenController@issueToken'
]);

但这会在没有异常跟踪的情况下向我抛出 500。

我正在使用自定义路由来请求令牌,以便根据用户的角色设置令牌范围。我正在使用范围检查用户(或具有其他授权类型的应用程序)的角色,Passport 的正常令牌路由应该阻止除 Lumen self 之外的所有人。有了这个,只有 Lumen 应该能够设置范围。

TLDR:如何在 Lumen 中添加中间件来封装定义的路由。

【问题讨论】:

【参考方案1】:

https://github.com/dusterio/lumen-passport 的最新合并支持为护照路由添加前缀。

我在我的 composer.json 中添加了"dusterio/lumen-passport": "dev-master",,在 bootstrap/app.php 的末尾添加了Dusterio\LumenPassport\LumenPassport::routes($app, [ 'prefix' => 'api/v1/protected', 'middleware' => 'reject', ]);

有关更多信息,请参阅此问题:https://github.com/dusterio/lumen-passport/issues/31

【讨论】:

以上是关于Lumen:将中间件添加到打包定义的路由中的主要内容,如果未能解决你的问题,请参考以下文章

Lumen 5.3 未定义变量:闭包

为速度而生的Laravel框架Lumen-路由与中间件

如何在 lumen 框架中获取中间件的当前路由?

在 Lumen (Laravel) 中启用中间件

lumen 中间件详解

Lumen:jwt-auth 不存在方法句柄,已完成中间件