如何将层次结构权限 Class 存储在人员 Class 中?
How can I store the hierarchic Authority Class in the Person Class?
我的问题是:(如何?)我可以使用 Spring 安全插件在 Grails 中的用户 class 中为我的用户存储我的 "authority" 吗?
我给出了以下 SQL 结构:
用户table:
...
varchar(255): username
...
int(2) rank: (refers to Rank table)
排名table:
int(11): id
varchar(25): rank_name
我可以配置我的域 classes,以使用该结构而不是典型的 "User, Authority, UserAuthority many to many" 架构吗?
排名 (id) 是分层的,这意味着排名 4 的用户从排名 3 的用户那里获得所有 "authorities" 等等
编辑:
我只是将用户域中的 getAuthorities 方法替换为以下内容:
Set<Permission> getAuthorities() {
Authority.findAllById(this.rank)
// instead of: UserAuthority.findAllByUser(this)*.permission
}
查看 GormUserDetailsService 以了解授权是如何加载的。
springsecurity core有一个authoritiesPropertyName
配置,指定属性权限的用户域名称,默认值为'authorities' -- 你可以修改为return 权限基于您的域模型。
如果这不能满足您的要求,那么您也可以创建自定义用户详细信息服务。
并通过在 conf/spring/resources.groovy
中定义名称为 userDetailsService
的 bean 来覆盖原始用户详细信息服务
我的问题是:(如何?)我可以使用 Spring 安全插件在 Grails 中的用户 class 中为我的用户存储我的 "authority" 吗?
我给出了以下 SQL 结构:
用户table:
...
varchar(255): username
...
int(2) rank: (refers to Rank table)
排名table:
int(11): id
varchar(25): rank_name
我可以配置我的域 classes,以使用该结构而不是典型的 "User, Authority, UserAuthority many to many" 架构吗?
排名 (id) 是分层的,这意味着排名 4 的用户从排名 3 的用户那里获得所有 "authorities" 等等
编辑: 我只是将用户域中的 getAuthorities 方法替换为以下内容:
Set<Permission> getAuthorities() {
Authority.findAllById(this.rank)
// instead of: UserAuthority.findAllByUser(this)*.permission
}
查看 GormUserDetailsService 以了解授权是如何加载的。
springsecurity core有一个authoritiesPropertyName
配置,指定属性权限的用户域名称,默认值为'authorities' -- 你可以修改为return 权限基于您的域模型。
如果这不能满足您的要求,那么您也可以创建自定义用户详细信息服务。
并通过在 conf/spring/resources.groovy
userDetailsService
的 bean 来覆盖原始用户详细信息服务