0

カスタムMyUserDetailsS​​erviceがあります

class MyUserDetailsService implements GrailsUserDetailsService {
 ...
}

コントローラーを呼び出したい

class MyController {
    def springSecurityService

    def check() {
        String user = springSecurityService.principal.username
        def MyUserdetails = MyUserDetailsService.loadUserByUsername(user)
    }
}

エラーが発生します

メソッドの署名なし:static MyUserDetailsS​​ervice.loadUserByUsername()は引数タイプに適用可能:(java.lang.String)値:[user]可能な解決策:loadUserByUsername(java.lang.String)、loadUserByUsername(java.lang.String、boolean )。

ログイン後にユーザーを確認したいので、Beanには入れません。

4

2 に答える 2

2

次のように、ファイル grails-app/conf/spring/resources.groovy でカスタム ユーザー詳細サービスを Grails に登録したと思います。

beans = {
    userDetailsService(com.mycompany.myapp.MyUserDetailsService)
}

登録したら、コントローラーで userDetailsS​​ervice 変数を宣言して使用するだけで、Grails の自動サービス インジェクションに依存できます。

class SomeController {
    def userDetailsService
    ...
    def someAction() {
        String user = springSecurityService.principal.username
        CustomUserDetails userdetails = userDetailsService.loadUserByUsername(user)
    }
}

ここのドキュメントはかなり役に立ちます。

于 2013-02-24T08:19:02.230 に答える
0

サービスを services フォルダーに配置し、コントローラーから参照します。

 import your.package.MyUserDetailsService

 class MyController {

        MyUserDetailsService muds
        def springSecurityService

        def check() {
            String user = springSecurityService.principal.username
            def MyUserdetails = muds.loadUserByUsername(user)
        }
  }
于 2013-02-24T08:26:51.027 に答える