質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

4852閲覧

ログアウトを行ったユーザのID取得

koronatail

総合スコア433

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

1グッド

1クリップ

投稿2016/09/30 12:47

編集2016/10/03 00:45

###前提・実現したいこと
Spring Securityを利用した認証を行っています。
ログアウト時に、ログアウトしたユーザのIDを含んだ独自のログを出力したいと考えています。
ログアウトしたユーザのIDを取得する場合、どのタイミングで何をすれば取得できるでしょうか。
ログ出力にアスペクトを利用した場合と、利用せずに直接ファイル出力を行う関数を呼び出す場合の2種類分かるとうれしいです。

###バージョン情報
Spring 4.2.7.RELEASE
Spring Boot 1.3.6.RELEASE

よろしくお願いします

A-pZ👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

A-pZ

2016/09/30 15:49

念のため、 SpringSecurityのバージョン(ないしはSpringBootをお使いの場合は、そのバージョン)を記載すると、良い回答が得られるかもしれません。
koronatail

2016/10/03 00:45

ご指摘ありがとうございます。 遅くなってしまいましたがバージョンの追記をしました。
guest

回答1

0

自己解決

LogoutHandlerというのが見つかりました。
調べたつもりだったのですが不十分だったようです・・・
###ドキュメント
http://docs.spring.io/spring-security/site/docs/current/apidocs/org/springframework/security/web/authentication/logout/LogoutHandler.html
###参考
http://stackoverflow.com/questions/29583923/spring-security-java-config-custom-logout-handler-not-working

参考URLに書いてあるとおりですが、以下のような記述でログアウトした人のIDを出力できました。
試してないですがCustomLogoutHandlerのlogoutのタイミングにジョインポイントを指定すればなんとかなりそうです。
######CustomLogoutHandler.java

public class CustomLogoutHandler implements LogoutHandler { @Override public void logout(HttpServletRequest request, HttpServletResponse response, Authentication authentication) { //ログ出力処理~~~~~~~ System.out.println("ログアウトした人:" + authentication.getName()); } }

######WebSecurityConfig.java

public class WebSecurityConfig extends WebSecurityConfigurerAdapter { //省略~~~ @Override protected void configure(final HttpSecurity pHttp) throws Exception { pHttp //省略~~~ .and().logout() .addLogoutHandler(customLogoutHandler())//LogoutHandler設定 .logoutRequestMatcher(new AntPathRequestMatcher("/logout")) //ログアウトURL .logoutSuccessUrl("/logout_complete")//ログアウト成功時の遷移先 ; } @Bean public CustomLogoutHandler customLogoutHandler() { return new CustomLogoutHandler(); } //省略~~~ }

投稿2016/10/03 02:06

koronatail

総合スコア433

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問