最初にどのようなイベントがあるか確認する
grails-spring-security-core
にある、
src/java/grails/plugin/springsecurity/SecurityEventListener.java
の、
1 2 3 |
public void onApplicationEvent(final ApplicationEvent e) |
にブレークポイントをはる。
そして、
Config.groovy に以下を追加
1 2 3 |
grails.plugins.springsecurity.useSecurityEventListener = true |
これで、デバッグで起動してればログイン・ログアウト周りでのイベントを捕捉できる。
イベントのリスナを作る
イベントのリスナを作るには、
ApplicationListener をインプリメントしたクラスを作りリッスンしたいイベントの型を指定する
今回は認証失敗時の処理をハンドルしたいので、AuthorizationFailureEvent を指定する
こんな感じ
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class AuthorizationFailureEventListener implements ApplicationListener<AuthorizationFailureEvent>{ /** * Handle an application event. * @param event the event to respond to */ @Override void onApplicationEvent(AuthorizationFailureEvent event) { // Do something } } |
さいごに、resources.groovy に追加する
1 2 3 |
authenticationServiceExceptionEventListener(AuthorizationFailureEventListener) |