Symfony2& JMSSecurityExtraBundle:"不允许被禁止"

时间:2014-09-04 14:05:54

标签: php symfony

我正在努力实现"禁止禁止的内容"策略,同时保持FOSRest注释的灵活性。在不讨论这个用例的必要性的情况下 - 我可以否认所有这些,并允许匿名用户只通过注释来访问某些方法,如

use JMS\SecurityExtraBundle\Annotation\Secure;
use FOS\RestBundle\Controller\Annotations\Get;

....
/**
* @Secure(roles="IS_AUTHENTICATED_ANONYMOUSLY")
* @Get('/testpage')
**/

并拒绝所有(除了登录,当然,使用ACL)

    - { path: ^/login,                    roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/login_check,              roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/,                         roles: IS_AUTHENTICATED_FULLY }

起初我真的希望

secure_all_services: true

jmssecurity配置符号,但它只能启用jms注释的整个项目解析。

我的样本不起作用,我确信JMSSecurity本身工作正常,没有ACL拒绝规则我可以​​通过注释拒绝单个元素。

1 个答案:

答案 0 :(得分:0)

如果我没记错,注释语法是

/**
 * @Secure(roles="ROLE_ADMIN")
 **/

这只适用于方法。对于课程,您需要@PreAuthorize注释

请参阅http://jmsyst.com/bundles/JMSSecurityExtraBundle/master/annotations