我正在从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。