我正在使用FOSUserBundle,我正在寻找添加一些自动化逻辑的最佳方法。
我想要安全的路线始终以相同的模式开始:
/admin/{id}/
ID指的是实体" Site"。 User类与此实体具有ManyToOne关系。
所以,我想每次检查所调用的路由是否对应于" Site"存储在我的用户实例中。 我检查了文档以找到最佳方法:创建不同的角色,使用ACL,在每个控制器中手动检查......我不想检查每个被调用的函数,但我找不到更简单的方法,所以我正在寻求帮助。
答案 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",它似乎很好。