我在将userDetailsService注入自定义提供程序时遇到问题。我有一个自定义userDetailsService,我正在尝试向我的提供者注入,但是,出于某种原因,我的提供者将其解析为null userDetailsService。 以下是来自我的resources.groovy:
beans = {
userDetailsService(CustomUserDetailsService) {
}
stupidAuthenticationProvider(StupidAuthenticationProvider) {
userDetailsService = ref("userDetailsService")
}
}
基本上我只是在我的提供者中定义它如下:
public class StupidAuthenticationProvider implements AuthenticationProvider {
def userDetailsService
我错过了什么?
答案 0 :(得分:2)
您的CustomUserDetailsService是否在包中?如果是,那么您应该在配置中给出它的完全限定名称。
以下内容对我有用:
beans = {
userDetailsService(com.mysite.MyUserDetailsService)
//and then refer it like...
emailAuthenticationProvider(com.mysite.EmailAuthenticationProvider) {
springSecurityService = ref('springSecurityService')
userDetailsService = ref('userDetailsService')
}
}
并在身份验证提供程序中......
class EmailAuthenticationProvider implements AuthenticationProvider {
def userDetailsService
def springSecurityService
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
//...
}
}
答案 1 :(得分:1)
尝试使用类的限定名称:
beans = {
userDetailsService(com.test.CustomUserDetailsService){
}
StupidAuthenticationProvider(com.test.XXX.StupidAuthenticationProvider) {
userDetailsService = ref('userDetailsService ')
}
}