【发布时间】:2014-07-11 01:20:08
【问题描述】:
有 2 个角色 1) ROLE_USER1 2)ROLE_USER2
我不想在 spring-security.xml 中添加每个 URI 示例我有管理用户模块,我可以在其中创建、更新、删除和读取用户我有一个名为用户控制器的控制器。该控制器中的映射是
@RequestMapping (value="user/create")
@RequestMapping (value="user/list")
@RequestMapping (value="user/update")
@RequestMapping (value="user/delete")
我希望 ROLE_USER1 只能访问“user/create”,所以在这种情况下,我必须在 secruity.xml 中为 ROLE_USER1 角色添加 URI“user/create”
并且 ROLE_USER2 只能访问“user/list”和“user/delete”,在这种情况下,我必须在 security.xml 中为 ROLE_USER2 添加 2 个 URI
如果这种情况可能发生,我将始终在 URL 中提供管理员角色可以访问的 /admin
对于超级管理员 URL 将包含 /SuperAdmin
我只需要在 spring-security.xml 中提供 /Admin/** 和 /superAdmin/**
但要实现上述场景,我必须在控制器中添加多个映射以进行单个操作。如果我添加多个动作,那么我有 Jsp 动作问题。即可能有“/admin/user/create”或“/superAdmin/user/create”
我想用 Spring.security.xml 中的最少条目来保护 url
问候
【问题讨论】:
-
你为什么需要 2 个网址?! url
admin/user/create/或者更好的/user/create应该受到 Spring Security 的保护,并且只允许访问任一角色。您不想为了安全而添加一大堆 URI。 -
Yes.. 示例我创建了一个 UserCONtroller,其中写入了与用户相关的所有操作。因此,如果我只想管理员访问查看用户,那么我必须在安全文件中添加所有 URI。我不想在安全文件中添加每个 URI
-
我不明白你想要什么,你不想要多个网址,因为这可以说是一个维护地狱。只需保护 Spring Security 中的
/admin/user/create即可。见docs.spring.io/spring-security/site/docs/current/reference/… -
或者在方法
@PreAuthorize上使用注解来应用安全性。 -
嗨@M.Deinum 感谢您抽出宝贵的时间。我已经编辑了原始问题,请看一下。希望这次我能正确解释
标签: spring spring-mvc spring-security