如何在Symfony 2中覆盖FOSUserBundle自动化

时间:2014-09-28 19:40:49

标签: php symfony fosuserbundle

我正在使用FOSUserBundle,我正在寻找添加一些自动化逻辑的最佳方法。

我想要安全的路线始终以相同的模式开始:

/admin/{id}/

ID指的是实体" Site"。 User类与此实体具有ManyToOne关系。

所以,我想每次检查所调用的路由是否对应于" Site"存储在我的用户实例中。 我检查了文档以找到最佳方法:创建不同的角色,使用ACL,在每个控制器中手动检查......我不想检查每个被调用的函数,但我找不到更简单的方法,所以我正在寻求帮助。

2 个答案:

答案 0 :(得分:0)

您需要将路由授权访问配置到app/config/security.yml文件

像这样:

access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/*, role: ROLE_ADMIN }

答案 1 :(得分:0)

我终于找到了另一个解决方案。我不确定它是否是最佳方式,但它有效。

我的所有控制器都扩展了一个带有__call函数的抽象控制器,用于检查会话用户的网站是否与param转换器传递的网站相对应。我将所有控制器方法的振动性改为" protected",它似乎很好。