Sev*_*kov 5 php middleware laravel lumen
我正在使用 "laravel/lumen-framework": "5.7.*"
我有两个中间件,第一个AuthTokenAuthenticate应该应用于所有路由,因此它的定义bootstrap/app.php如
$app->middleware([
App\Http\Middleware\AuthTokenAuthenticate::class
]);
Run Code Online (Sandbox Code Playgroud)
另一个中间件的定义如下
$app->routeMiddleware([
'auth.token' => Vendor\Utilities\Middleware\AuthToken::class
]);
Run Code Online (Sandbox Code Playgroud)
并且仅适用于某些特定路线。
我需要auth.token先执行,然后AuthTokenAuthenticate才能找到方法,因为流明先执行$app->middleware路线。
Laravel $middlewarePriority正是我需要的,但是我如何在流明中处理它呢?
小智 5
我认为这在 Lumen 中是不可能的。我建议将中间件与路由器组中间件选项一起使用。
移除全局中间件注册
/bootstrap/app.php
$app->middleware([
//App\Http\Middleware\AuthTokenAuthenticate::class
]);
Run Code Online (Sandbox Code Playgroud)
将两个中间件添加到路由中间件
/bootstrap/app.php
$app->routeMiddleware([
'auth.token' => Vendor\Utilities\Middleware\AuthToken::class,
'auth.token.authenticate' => App\Http\Middleware\AuthTokenAuthenticate::class
]);
Run Code Online (Sandbox Code Playgroud)
创建两个路由组:一个只包含auth.token.authenticate一个,另一个包含auth.token 和 auth.token.authenticate。
/路线/网络/ 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
}]);
Run Code Online (Sandbox Code Playgroud)
我认为这是获得所需效果的最干净的方法。
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |