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