SpringSecurityは初めてです。ユーザーが正常にログインすると呼び出されるイベントリスナーを追加するにはどうすればよいですか?また、このリスナーで何らかの一意のセッションIDを取得する必要があります。これは、後で使用できるようにする必要があります。別のサーバーと同期するには、このIDが必要です。
41494 次
5 に答える
54
ApplicationListenerを実装するSpringBeanを定義する必要があります。
次に、コードで次のようにします。
public void onApplicationEvent(ApplicationEvent appEvent)
{
if (appEvent instanceof AuthenticationSuccessEvent)
{
AuthenticationSuccessEvent event = (AuthenticationSuccessEvent) appEvent;
UserDetails userDetails = (UserDetails) event.getAuthentication().getPrincipal();
// ....
}
}
次に、applicationContext.xmlファイルで、そのBeanを定義するだけで、イベントの受信が自動的に開始されます:)
于 2008-10-08T11:14:31.270 に答える
49
AuthenticationSuccessEvent の問題は、remember-me ログインで公開されないことです。記憶認証認証を使用している場合は、代わりに InteractiveAuthenticationSuccessEvent を使用してください。これは、通常のログインでも記憶ログインでも機能します。
@Component
public class LoginListener implements ApplicationListener<InteractiveAuthenticationSuccessEvent> {
@Override
public void onApplicationEvent(InteractiveAuthenticationSuccessEvent event)
{
UserDetails userDetails = (UserDetails) event.getAuthentication().getPrincipal();
// ...
}
}
于 2013-08-08T13:56:45.450 に答える
26
Phill's answer に似ていますが、Generics を考慮するように変更されています。
public class AuthenticationListener implements ApplicationListener<AuthenticationSuccessEvent> {
@Override
public void onApplicationEvent(final AuthenticationSuccessEvent event) {
// ...
}
}
于 2012-12-26T16:34:56.220 に答える