我正在从grails 1.3.9 / acegi升级到grails 2.4.2 / spring security。

在acegi中,我有一个声明的getAuthoritiesMethod方法。此方法检索该人的权限,并将实际的权限名称(字符串)添加到列表中以供返回。但是不再支持getAuthoritiesMethod。

在新的配置中,我有

grails.plugin.springsecurity.authority.className ='com.my.domain.principal.Authority'
grails.plugin.springsecurity.authority.nameField ='authority'

但是登录失败,我在 session 中看到了这一点

SPRING_SECURITY_LAST_EXCEPTION = org.springframework.security.authentication.AuthenticationServiceException:找不到以下匹配的构造函数:org.springframework.security.core.authority.SimpleGrantedAuthority(com.my.domain.principal.Authority)

似乎它需要这里的权限vs类的实际String名称,我认为这应该是从声明的grails.plugin.springsecurity.authority.nameField派生的。

任何帮助深表感谢!

最佳答案

我在com.my.domain.principal.Authority类上添加了一个方法以返回授权名称(字符串),并更改了grails.plugin.springsecurity.authority.nameField以匹配newMethod。

09-30 15:39