是否可以在Symfony 2中保护整个控制器?

时间:2012-08-17 02:59:39

标签: php symfony jms

我正在使用JMS Security Extra软件包来保护控制器中的方法。 但有没有办法可以用@Secure确保整个控制器?

2 个答案:

答案 0 :(得分:6)

这可以按Documentaion

完成

https://github.com/schmittjoh/JMSSecurityExtraBundle/issues/50

  

提示:如果您希望使用相同的控制器保护控制器的所有操作   规则,您也可以在类本身上指定@PreAuthorize。警告   但是,此规则仅适用于声明的方法   上课。

use JMS\SecurityExtraBundle\Annotation\PreAuthorize;

 /** @PreAuthorize("hasRole('A') or (hasRole('B') and hasRole('C'))") */
class MyService
{

    public function secureMethod()
    {
        // ...
    }
}

答案 1 :(得分:1)

此注释只能应用于方法。

你可以这样做(这是一个正则表达式):

jms_security_extra:
    method_access_control:
        'AcmeDemoBundle:AdminController:.*Action': 'hasRole("ROLE_ADMIN")'

阅读文档:http://jmsyst.com/bundles/JMSSecurityExtraBundle/master/method_security_authorization