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 に答える