我正在使用JMS Security Extra软件包来保护控制器中的方法。
但有没有办法可以用@Secure
确保整个控制器?
答案 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