我正在使用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