Slim 3组路由中间件的名称

时间:2017-05-05 03:34:58

标签: php slim middleware slim-3

根据文档,我无法为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());

在第二组中,我希望auth中间件为ajax调用返回403,而不是在第一组中重定向。

我不想管理一个名为this great answer中建议的所有路线的数组。它应该是组的名称,并根据它来决定返回什么类型的响应代码。

我也不想管理两个中间件。我正在寻找一个优雅的解决方案来管理当前路线组。

1 个答案:

答案 0 :(得分:1)

Slim 3组没有名字 - 它们基本上是语法糖,可以做两件事:

  1. 将可选的URL段添加到一组路径定义中。
  2. 将中间件应用于一组路径定义。
  3. 要执行您想要执行的操作,您的CheckSession中间件需要检查请求的路径,如果它以api/开头并且在这种情况下发送403。或者,CheckSession可以查找X-Requested-With标头,该标头通常与ajax请求一起发送。