2

私はgrailsプラグインspring-security-core-1.2.1を持っています

grails-app/conf/spring/resources.groovy にセキュリティ イベント リスナーを Spring Bean として登録しました。

securityEventListener(LoggingSecurityEventListener)

grails-app/conf/Config.groovy に次の 2 つの追加を行います。

grails.plugins.springsecurity.useSecurityEventListener = true
grails.plugins.springsecurity.logout.handlerNames =
    ['rememberMeServices',
            'securityContextLogoutHandler',
            'securityEventListener']

私のロギング/ログアウトリスナー

class LoggingSecurityEventListener implements ApplicationListener<AbstractAuthenticationEvent>, LogoutHandler {

            void onApplicationEvent(AbstractAuthenticationEvent event) {
                System.out.println('appEvent')
            }


            void logout(HttpServletRequest request, HttpServletResponse response,
                            Authentication authentication) {
                System.out.println('logout')
            }

}

on ApplicationEvent は正常に動作しますが、ログアウトが機能しません。何が問題なのですか?

または、ログに記録しているすべてのユーザーを取得する方法を教えてください

4

1 に答える 1

4

設定すると

grails.plugins.springsecurity.useSecurityEventListener = true

Spring セキュリティ プラグインは、 という独自のイベント リスナーを登録しますsecurityEventListener。検索元のハンドラーhandlerNamesは、おそらくあなたのものではなく、登録されたプラグインを取得しています。Bean の名前を次のように変更してみてください。

loggingSecurityEventListener(LoggingSecurityEventListener)

を次のように置き換えhandlerNamesます

grails.plugins.springsecurity.logout.handlerNames = 
    ['rememberMeServices',
     'securityContextLogoutHandler',
     'loggingSecurityEventListener']

注: 構成プロパティ名が変更されました ( plugins-> plugin)。grails spring-security プラグイン バージョン 2.0 以降を使用している場合は、次を使用します。

grails.plugin.springsecurity.logout.handlerNames
于 2012-10-15T19:13:52.560 に答える