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


Is it possible to secure whole Controller in Symfony 2?

我正在使用JMSSecurityExtra捆绑包来保护我的控制器中的方法。但是有什么方法可以用@Secure保护整个控制器吗?

这可以按照 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()
    {
        // ...
    }
}

此注释只能应用于方法。

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

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

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