2

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

4

2 回答 2

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()
    {
        // ...
    }
}
于 2012-08-17T06:54:56.343 回答
1

此注解只能应用于方法。

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

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

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

于 2012-08-17T06:31:46.227 回答