【问题标题】:Spring Security Domain Model AuthorizationSpring Security 域模型授权
【发布时间】:2017-03-19 21:33:08
【问题描述】:

Spring Security 具有 Principal 和 GrantedAuthority 的基本思想。我已经实现了 Spring Security 并阅读了这个 stackoverflow 并在基本层面上理解“ROLE”只不过是一个以“ROLE_”为前缀的 GrantedAuthority。

我不明白为什么首先要有这个约定?为什么@PreAuthorize("hasRole('XYZ')") 等同于@PreAuthorize("hasAuthority('ROLE_XYZ')")?

像这样隔离授权权限有什么特别之处?目的是什么?

此外,将这些“角色”应用于领域模型的特定实例的最佳约定是什么。以跟踪项目的系统为例,您希望明确授予用户查看和编辑某些项目的权限。我可以创建 ROLE_EDIT_PROJECT 和 ROLE_VIEW_PROJECT 但这是应用程序范围的。你会在哪里建立角色与特定项目的关系?连接表?您甚至会将 Spring Security 纳入其中,还是在您的应用程序中从头开始构建这种类型的安全性?

【问题讨论】:

    标签: spring spring-mvc spring-boot spring-security


    【解决方案1】:

    不幸的是,我不知道为什么要使用这种约定,我猜可能只是遗留代码。

    对于您问题的第二部分,我建议使用“hasPermission(project, 'view')”并定义您自己的PermissionEvaluator。

    更多信息可以找到here

    【讨论】:

      猜你喜欢
      • 2016-06-03
      • 2013-03-15
      • 2021-10-14
      • 2016-08-08
      • 2017-04-20
      • 2020-04-25
      • 2022-01-06
      • 2020-03-20
      • 2014-05-10
      相关资源
      最近更新 更多