0

MyLogoutHandlerクラスでは、determineTargetUrl()メソッドをオーバーライドします。ここでは、を呼び出しMyUserDetials userDetails = (MyUserDetials)userContextManager.getUserDetails()ていますが、userDetailsはnullです。

構成は次のとおりです。

<security:logout  
invalidate-session="true"
success-handler-ref="MyLogoutHandler"
logout-url="/auth/logout"/>

invalidate-session = "true"なので、nullになっていることに気づきましたか?しかし、私はこの属性を「true」に保つのが好きです。他に構成する方法はありますか?

私の目標は、ユーザーがログアウトをクリックした後にWebサービス呼び出しを行うために、userDetailsからいくつかの情報を取得する必要があることです。

ありがとうございました。

4

2 に答える 2

2

独自のLogoutHandlerを作成し、実装する必要があります

 void logout(HttpServletRequest request, HttpServletResponse response, Authentication authentication);

security:logoutタグに実装を追加します。authenticationパラメータからユーザーの詳細を取得した後。

于 2013-03-04T12:12:14.463 に答える
2

この問題を修正しました。自分のハンドラーを作成し、以下をオーバーライドしました:

public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {...}

の方法*SimpleUrlLogoutSuccessHandler**authentication*これで、スプリング構成に従ってオブジェクトを取得できます。

ありがとうございました。

于 2013-03-06T06:07:28.123 に答える