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 に答える