【发布时间】: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