有2个角色 1)ROLE_USER1 2)ROLE_USER2
我不想在spring-security.xml中添加每个URI示例我有Manage User模块,我可以在哪里创建,更新,删除和读取用户我有一个名为user controller的控制器。该控制器中的映射是
@RequestMapping (value="user/create")
@RequestMapping (value="user/list")
@RequestMapping (value="user/update")
@RequestMapping (value="user/delete")
我希望ROLE_USER1只能访问" user / create"所以在这种情况下我必须添加URI" user / create"对于secruity.xml中的ROLE_USER1角色
并且ROLE_USER2只能访问" user / list"和" user / delete",在这种情况下,我必须在security.xml中为ROLE_USER2添加2个URI
我想如果这可能以某种方式发生,我将始终在管理员角色可以访问的URL中提供/ admin
对于SuperAdmin,URL将包含/ SuperAdmin
我只需要在spring-security.xml中提供/ Admin / **和/ superAdmin / **
但是要实现上述场景,我必须在控制器中添加多个映射以执行单个操作。如果我添加多个动作,那么我有Jsp动作问题。即可能有" / admin / user / create"或" / superAdmin / user / create"
我希望使用Spring.security.xml
中的最少条目来保护网址此致
答案 0 :(得分:0)
我认为你不应该为admin和superadmin创建一个新的Controller。
相反,您应该只将角色添加到security.xml中的URL。例如,如果您当前的security.xml配置如下所示
<intercept-url pattern="/user/create" access="hasAnyRole('ROLE_USER1')" />
<intercept-url pattern="/user/delete" access="hasAnyRole('ROLE_USER2')" />
您只需添加admin和superadmin角色,如下所示。
<intercept-url pattern="/user/create" access="hasAnyRole('ROLE_USER1', 'SuperAdmin', 'Admin')" />
<intercept-url pattern="/user/delete" access="hasAnyRole('ROLE_USER2', 'SuperAdmin', 'Admin')" />
在Java代码中,如果您有不同角色的特殊逻辑,则可以按如下方式访问当前角色并切换逻辑。
SecurityContextHolder.getContext().getAuthentication().getAuthorities();