【发布时间】:2014-09-23 16:15:19
【问题描述】:
我正在开发一个应用程序,其中每个用户都可以访问许多 Project(s) 并且每个 Project 可能包含许多 Campaign(s) 等等。
然后我的网址看起来像:
/project/{project}/member
/project/{project}/member/{member}
/project/{project}/campaign
/project/{project}/campaign/{campaign}
/project/{project}/campaign/{campaign}/plot
/project/{project}/campaign/{campaign}/plot/{plot}
我了解到@ParamConverter 可以处理这些 URL 以满足我的需要。
--问题--
我正在寻找一种方法,让任何访问项目的用户都被授权...而无需复制每个控制器内的代码。
一个用户可以绑定到多个项目,通过 (ROLE_MEMBER 或 ROLE_ADMIN) 授予。
【问题讨论】:
-
如果你使用ACL你可以检查
jms/security-extra-bundle的PreAuthorize注解的使用。否则,您可以实现自定义ParamConverter,检查注入SecurityContext服务的正确角色 -
使用选民。我遇到了同样的问题。我所做的是:让选民只对某个属性进行投票,例如:REQUEST_ACCESS.将请求注入选民。根据请求路径。并添加 - { path: ^/ ,roles: REQUEST_ACCESS } 到防火墙配置的 access_control 部分。