PreAuthorize Symfony2 JMSSecurityExtraBundle的注释不起作用

时间:2013-11-06 14:29:49

标签: php symfony

使用Symfony2的JMSSecurityExtraBundle我尝试创建自己的表达式方法,并使用PreAuthorize注释将其绑定在控制器中。

我不知道为什么但该方法永远不会被触发,并且在尝试评估PreAuthorize注释时,安全捆绑包的结尾是“令牌没有所需的角色”。似乎是尝试验证角色而不是解析PreAuthorize表达式。

关于我正在尝试做什么的示例:

<?php

namespace Acme\HelperBundle\Security;

use Symfony\Component\DependencyInjection\ContainerInterface;
use JMS\DiExtraBundle\Annotation as DI;

/** @DI\Service */
class RequestAccessEvaluator
{
    private $container;

    /**
     * @DI\InjectParams({
     *     "container" = @DI\Inject("service_container"),
     * })
     */
    public function __construct(ContainerInterface $container)
    {
        $this->container = $container;
    }

    /** @DI\SecurityFunction("isAllowed") */
    public function isAllowed()
    {
        return true;
    }
}

我的控制器:

   /**
     * 
     * @PreAuthorize("isAllowed()")
     * @Route("/bla/{id}")
     * @Method({"POST"})
     * @return json
     */
    public function postBlaAction(Request $request, $id)
    {

1 个答案:

答案 0 :(得分:4)

我终于解决了我的问题......实际上我错过了config

它只是将它放在我的config.yml中并将选项“expressions”设置为true。