【问题标题】:Spring MVC + Hibernate list object and check permissionsSpring MVC + Hibernate 列表对象并检查权限
【发布时间】:2018-04-19 23:57:39
【问题描述】:

我正在使用 Spring MVC 和 Hibernate。

假设我们有控制器动作

@GetMapping("/user/remove")
public String removeAction(@ModelAttribute(value = "user_id") User user, RedirectAttributes redirectAttributes) {
    ...
}

是否可以应用一些规则来检查用户是否可以删除该用户? 例如ROLE_ADMIN 角色的用户可以删除所有用户,ROLE_USER 角色的用户可以删除自己创建的用户。

第二个问题,当角色为 ROLE_USER 的用户列出所有用户时,是否可以在 Hibernate 级别过滤该列表,而无需遍历所有用户并检查谁创建了该用户?

最后一个问题。要删除操作,我正在传递 user_id。可以在不调用 UserService 的情况下从 DB 中检索该用户,如果所有权限都正常,那么希望该用户对象在该 removeAction 中可用。

【问题讨论】:

    标签: java spring hibernate spring-mvc permissions


    【解决方案1】:

    一种选择是使用@RolesAllowed@Secured 注释。两者本质上都做同样的事情According to this post

    它们可以在类级别或方法级别应用。

    【讨论】:

    • @Secured 注释检查用户是否有权执行某些 MVC 操作,但在我的情况下,所有用户都有权访问该操作,但只有用户所有者和管理员可以删除该用户。在我的情况下这是错误的解决方案
    【解决方案2】:

    Spring 具有注释类型安全性,可用于您的第一个问题,尽管您已为用户设置了角色,但请参阅 @Secured("ROLE_ADMIN") 方法的链接 Annotation Type Secured

    您可能需要为您的数据库条目设置一些额外的逻辑以显示谁创建了用户,您可以已经完成此操作,这将允许您根据创建它的人分离列表,也许用户名和角色可以是选项,这可能有助于问题 2。 问题 3 您可以使用 Jstl 连接到您的数据库甚至是 JQuery,请告诉我们更多有关您的环境设置的信息,希望这能给您一些前进的方向。快乐编码

    【讨论】:

      猜你喜欢
      • 2011-02-02
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-21
      相关资源
      最近更新 更多