1

でユーザー名またはUserDetailオブジェクトを取得する方法はlogout-success-url? 以下は私の構成です:

<form-login default-target-url="/security/loginSuccess.action" 
            always-use-default-target="false" 
            authentication-failure-url="/security/loginFailed.action"
            login-page="/security/restrictUser.action"/>    

<logout invalidate-session="true" logout-success-url="/security/logoutUser.action" />

<session-management 
  session-authentication-strategy-ref="customMsgAwareConcurrentSessionControlStartegy" 
  invalid-session-url="/security/logoutUser.action"/>

ログアウトを要求したユーザー名を取得したいlogout-success-url(私にとっては Struts 2 アクション メソッドです)。を確認しましたが、コントロールが のアクション メソッドに到達するとクリアさSecurityContextHolderれるようです。SecurityContextHolderlogout-success-url

4

1 に答える 1

6

そのためのカスタムLogoutSuccessHandlerを使用してください。構成内でBeanを定義し、タグsuccess-handler-refの属性を使用します。<logout>

<logout success-handler-ref="customLogoutSuccessHandler" />
<beans:bean id="customLogoutSuccessHandler" class="..." />

そして中CustomLogoutSuccessHandlerには引数のあるonLogoutSuccessメソッドがありAuthenticationます。

public class CustomLogoutSuccessHandler extends
    AbstractAuthenticationTargetUrlRequestHandler implements
    LogoutSuccessHandler {

    public void onLogoutSuccess(HttpServletRequest request,
        HttpServletResponse response, Authentication authentication)
        throws IOException, ServletException {
         // use authentication to get user name
    }
}
于 2012-11-22T09:20:31.160 に答える