我在将 userDetailsService 注入(inject)自定义提供程序时遇到问题。我有一个自定义的 userDetailsService,我试图将其注入(inject)到我的提供程序中,但是,由于某些原因,我的提供程序会解析为空 userDetailsService。 以下内容来 self 的 resources.groovy:
beans = {
userDetailsService(CustomUserDetailsService) {
}
stupidAuthenticationProvider(StupidAuthenticationProvider) {
userDetailsService = ref("userDetailsService")
}
}
基本上我只是在我的提供程序中定义它,如下所示:
public class StupidAuthenticationProvider implements AuthenticationProvider {
def userDetailsService
我错过了什么?
最佳答案
您的 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 {
//...
}
}
关于grails spring security 自定义 userDetailsService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15088882/