2

我在将 userDetailsS​​ervice 注入自定义提供程序时遇到问题。我有一个自定义的 userDetailsS​​ervice,我试图将它注入我的提供者,但是,由于我的提供者的某种原因,这在 null userDetailsS​​ervice 中解析。以下来自我的 resources.groovy:

beans = {
  userDetailsService(CustomUserDetailsService) {
  }

  stupidAuthenticationProvider(StupidAuthenticationProvider) {
    userDetailsService = ref("userDetailsService")
  }
}

基本上我只是在我的提供者中定义它如下:

public class StupidAuthenticationProvider implements AuthenticationProvider {
def userDetailsService

我错过了什么?

4

2 回答 2

2

您的 CustomUserDetailsS​​ervice 是否在一个包中?如果是,那么您应该在配置中给出它的完全限定名称。

以下对我有用:

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 {
        //...
    }
}
于 2013-02-26T12:56:17.420 回答
1

尝试使用类的限定名称:

    beans = {
        userDetailsService(com.test.CustomUserDetailsService){
        }

        StupidAuthenticationProvider(com.test.XXX.StupidAuthenticationProvider) {
            userDetailsService = ref('userDetailsService ')
        }
    }
于 2013-02-26T12:41:14.370 回答