0

我的问题是:(如何?)我可以使用 Spring Security 插件将我的用户的“权限”存储在 Grails 的用户类中吗?

我给出了以下 SQL 结构:

用户表:

...
varchar(255): username
...
int(2) rank: (refers to Rank table)

排名表:

int(11): id
varchar(25): rank_name

我可以配置我的域类以使用该结构而不是典型的“用户、权限、用户权限多对多”模式吗?

等级(id)是分层的,这意味着等级为 4 的用户从等级为 3 的用户那里获得了所有“权限”等。

编辑:我只是在用户域中将 getAuthorities 方法替换为以下内容:

Set<Permission> getAuthorities() {
    Authority.findAllById(this.rank)
    // instead of: UserAuthority.findAllByUser(this)*.permission
}
4

1 回答 1

0

查看GormUserDetailsS​​ervice以了解如何加载授权。springsecurity核心有一个authoritiesPropertyName配置,它指定了应该返回权限的用户域的属性名称,默认值为'authorities' - 您可以修改它以根据您的域模型返回权限。

如果这不能满足您的要求,那么您也可以创建自定义用户详细信息服务。

并通过userDetailsService在您的conf/spring/resources.groovy

于 2017-03-24T15:33:28.233 回答