中间件的 Slim 3 组路由名称
Slim 3 group routes name for middleware
根据文档,我无法在 Slim 3 中为一组路由设置名称。
在 auth 中间件中,我想为所需的身份验证拆分路由,而不是。喜欢:
# These routes will return 302 redirect on auth false
$app->group('', function () use ($app) {
$app->get('/first', 'HomeCtrl:first')->setName('first');
$app->get('/second', 'HomeCtrl:second')->setName('second');
})->add(new \Lib\Middlewares\CheckSession());
# These routes will return 403 on auth false
$app->group('api/', function () use ($app) {
$app->get('users', 'UsersCtrl:getUsers')->setName('users');
$app->get('pages', 'PagesCtrl:getPages')->setName('pages');
})->add(new \Lib\Middlewares\CheckSession());
在第二组中,我希望身份验证中间件 return 403 用于 ajax 调用,而不是在第一组中重定向。
我不想像 中建议的那样管理包含所有路由名称的数组。它应该是组的名称,并根据它来决定对 return 的响应代码类型。
我也不想管理两个中间件。我正在寻找管理当前路由组的优雅解决方案。
Slim 3 组没有名称 - 它们本质上是做两件事的语法糖:
- 将可选的 URL 段添加到一组路由定义中。
- 将中间件应用于一组路由定义。
要执行您想做的事情,您的 CheckSession
中间件需要检查请求的路径以判断它是否以 api/
开头,并在这种情况下发送 403。或者,CheckSession
可以查找通常与 ajax 请求一起发送的 X-Requested-With
header。
根据文档,我无法在 Slim 3 中为一组路由设置名称。
在 auth 中间件中,我想为所需的身份验证拆分路由,而不是。喜欢:
# These routes will return 302 redirect on auth false
$app->group('', function () use ($app) {
$app->get('/first', 'HomeCtrl:first')->setName('first');
$app->get('/second', 'HomeCtrl:second')->setName('second');
})->add(new \Lib\Middlewares\CheckSession());
# These routes will return 403 on auth false
$app->group('api/', function () use ($app) {
$app->get('users', 'UsersCtrl:getUsers')->setName('users');
$app->get('pages', 'PagesCtrl:getPages')->setName('pages');
})->add(new \Lib\Middlewares\CheckSession());
在第二组中,我希望身份验证中间件 return 403 用于 ajax 调用,而不是在第一组中重定向。
我不想像
我也不想管理两个中间件。我正在寻找管理当前路由组的优雅解决方案。
Slim 3 组没有名称 - 它们本质上是做两件事的语法糖:
- 将可选的 URL 段添加到一组路由定义中。
- 将中间件应用于一组路由定义。
要执行您想做的事情,您的 CheckSession
中间件需要检查请求的路径以判断它是否以 api/
开头,并在这种情况下发送 403。或者,CheckSession
可以查找通常与 ajax 请求一起发送的 X-Requested-With
header。