gpt4 book ai didi

php - Lumen中间件排序(优先)

转载 作者:行者123 更新时间:2023-12-03 00:55:46 31 4
gpt4 key购买 nike

我正在使用“laravel/lumen-framework”:“5.7.*”

我有两个中间件,第一个 AuthTokenAuthenticate 应该应用于所有路由,因此它在 bootstrap/app.php 中定义如下

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

另一个中间件的定义如下

$app->routeMiddleware([
'auth.token' => Vendor\Utilities\Middleware\AuthToken::class
]);

并且仅适用于某些特定路线。

我需要先执行auth.token,然后执行AuthTokenAuthenticate,但我找不到执行此操作的方法,因为Lumen执行$app->中间件首先路由。

Laravel 有 $middlewarePriority 这正是我所需要的,但是我如何在 Lumen 中处理它?

最佳答案

我认为这在 Lumen 中不可能以您想要的方式实现。我建议将中间件与 router group middleware options 一起使用.

<小时/>

删除全局中间件注册

/bootstrap/app.php

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

将两个中间件添加到路由中间件

/bootstrap/app.php

$app->routeMiddleware([
'auth.token' => Vendor\Utilities\Middleware\AuthToken::class,
'auth.token.authenticate' => App\Http\Middleware\AuthTokenAuthenticate::class
]);

创建两个路由组:一组仅包含 auth.token.authenticate,一组同时包含 auth.token auth .token.authenticate.

/routes/web/php

$router->get('/', ['middleware' => 'auth.token.authenticate', function () use ($router) {
// these routes will just have auth.token.authenticate applied
}]);

$router->get('/authenticate', ['middleware' => 'auth.token|auth.token.authenticate', function () use ($router) {
// these routes will have both auth.token and auth.token.authenticate applied, with auth.token being the first one
}]);

我认为这是获得所需效果的最干净的方法。

关于php - Lumen中间件排序(优先),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53877447/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com