【问题标题】:Symfony2/Silex middlewaresSymfony2/Silex 中间件
【发布时间】:2015-10-27 14:24:19
【问题描述】:

我正在使用 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、posts 为前缀的链接 需要验证。 但这似乎不是它的工作方式,当我在 $api 之前添加一个之前,它只适用于 /api 的根目录,而不适用于 api/users 或 api/posts 或 api/categories,它们需要自己的中间件。

所以我的问题是:如何强制执行 baseurl/api/... 之后的所有内容以要求在 Silex 环境中进行验证。

【问题讨论】:

    标签: php symfony silex


    【解决方案1】:

    您可以将before() 添加到您的$app 实例(请参阅http://silex.sensiolabs.org/doc/middlewares.html#before-middleware)。

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

    您也可以使用SecurityServiceProvider,但根据您的用例,这可能有点过头了。

    【讨论】:

    • 这会起作用,但是如果我想为其他东西添加额外的路由怎么办,这也将得到验证 baseurl/admin
    • 测试$request->getRequestUri(),即if (preg_match('#^/(api|other)#', $request->getRequestUri())) { .. }
    猜你喜欢
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多