Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony2 JMSSecurityExtraBundle的预授权批注不工作_Php_Symfony - Fatal编程技术网

Php Symfony2 JMSSecurityExtraBundle的预授权批注不工作

Php Symfony2 JMSSecurityExtraBundle的预授权批注不工作,php,symfony,Php,Symfony,使用Symfony2的JMSSecurityExtraBundle,我尝试创建自己的表达式方法,并使用预授权注释将其绑定到控制器中 我不知道为什么,但该方法从未被激发,并且在尝试评估预授权注释时,安全包以“令牌没有所需的角色”结束。似乎正在尝试验证角色,而不是解析预授权表达式 关于我正在尝试做的事情的示例: <?php namespace Acme\HelperBundle\Security; use Symfony\Component\DependencyInjection\Cont

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

我不知道为什么,但该方法从未被激发,并且在尝试评估预授权注释时,安全包以“令牌没有所需的角色”结束。似乎正在尝试验证角色,而不是解析预授权表达式

关于我正在尝试做的事情的示例:

<?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;
    }
}

我终于解决了我的问题。。。事实上我错过了


只要把它放在我的config.yml中,并将“expressions”选项设置为true就行了。

我终于解决了我的问题。。。事实上我错过了


只需将其放入我的config.yml并将选项“expressions”设置为true即可在控制器顶部并清除缓存?这不是问题,我的控制器已经有预授权的use语句,我清除了缓存几次。您是否确保在
jms_di_extra
配置中注册了
HelperBundle
?是的,我也这么做了,什么也没做。似乎捆绑包在评估方法之前拒绝访问。稍微调试一下,我发现bundle对预授权注释的评估方式与安全注释(相同的方法)完全相同,这不太好。我遗漏了一些东西,我不明白……包括使用
use JMS\diextrable\Annotation\PreAuthorize
在控制器顶部并清除缓存?这不是问题,我的控制器已经有预授权的use语句,我清除了缓存几次。您是否确保在
jms_di_extra
配置中注册了
HelperBundle
?是的,我也这么做了,什么也没做。似乎捆绑包在评估方法之前拒绝访问。稍微调试一下,我发现bundle对预授权注释的评估方式与安全注释(相同的方法)完全相同,这不太好。我错过了什么,我不明白。。。。
   /**
     * 
     * @PreAuthorize("isAllowed()")
     * @Route("/bla/{id}")
     * @Method({"POST"})
     * @return json
     */
    public function postBlaAction(Request $request, $id)
    {