Php Symfony2/Silex Middleware

Php Symfony2/Silex Middleware,php,symfony,silex,Php,Symfony,Silex,我正在使用silex创建一个api,我的路由与此类似: $api = $app['controllers_factory']; $users = $app['controllers_factory']; $users->match('/', UsersController::action); $api->mount('/users', $users); $app->mount('/api', $api); 所以路由应该是baseurl/api/users 我现在要做的是将

我正在使用silex创建一个api,我的路由与此类似:

$api = $app['controllers_factory'];
$users = $app['controllers_factory'];

$users->match('/', UsersController::action);

$api->mount('/users', $users);
$app->mount('/api', $api);
所以路由应该是baseurl/api/users

我现在要做的是将before()附加到$api控制器组,并对api强制执行验证,因此任何以/api/…users前缀的链接都可以发布 需要验证。 但这似乎不是它的工作方式,当我在$api前面加上一个前缀时,它只对/api的根起作用,而不是api/用户或api/帖子或api/类别,它们需要自己的中间件

所以我的问题是:在baseurl/api/之后,我如何执行所有操作。。。需要在Silex环境中进行验证。

您可以将
before()
添加到
$app
实例中(请参阅)

并测试
$request
对象以查看是否需要身份验证


您也可以使用,但这可能会有点过分,具体取决于您的用例。

这会起作用,但如果我想为其他内容添加额外的路由,那么它也会得到验证baseurl/adminTest
$request->getRequestUri()
,即
如果(preg_match('.^/(api |其他)#',$request->getRequestUri()){..