Spring安全域模型授权

时间:2017-03-19 21:33:09

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

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

我不明白为什么首先要有这个惯例?为什么@PreAuthorize("hasRole('XYZ')")@PreAuthorize("hasAuthority('ROLE_XYZ')")等效?

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

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

1 个答案:

答案 0 :(得分:1)

我很遗憾不知道为什么使用这个约定,可能只是我想的遗留代码。

对于问题的第二部分,我建议使用" hasPermission(项目,'查看')"并定义自己的PermissionEvaluator

可以找到更多信息here