3

spring-security 3.x を使用しています。ユーザーがログアウトする直前に、いくつかのロジックを実行したいという要件があります。LogoutFilter以下のように提供されているフィルター拡張スプリングを作成しました。

public class MyFilter extends LogoutFilter{

  public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
            throws IOException, ServletException {
        //Perform some logic 

          super.doFilter(req,res,chain);

   }

}

ユーザーがログオフ ボタンをクリックしたときに、独自のフィルターを呼び出すにはどうすればよいですか?

4

1 に答える 1

3

custom は必要ありませんLogoutFilter。次のいずれかを標準フィルターにプラグインする必要があります。

LogoutHandlers は の前に呼び出されますLogoutSuccessHandlerが、後者は例外をスローすることが許可されていますが、前者は許可されていないことに注意してください。

また、カスタム s を使用する場合、これらをおよびLogoutHandlerに与える/注入する必要があることにも注意してください(使用する場合)。LogoutFilter ConcurrentSessionFilter

XML 構成 (つまり ) でセキュリティ名前空間を使用している場合は、次の方法でカスタムをxmlns="http://www.springframework.org/schema/security"簡単に追加できます。LogoutSuccessHandler

<http>
    ...
    <logout success-handler-ref="yourBeanId"/>
</http>

LogoutHandler名前空間を使用してカスタム s をプラグインする方法がわかりません。

それ以外の場合は、次のようになります。

<bean id="logoutFilter" class="org.springframework.security.web.authentication.logout.LogoutFilter">
    <constructor-arg ref="logoutSuccessHandler"/>
    <constructor-arg ref="logoutHandlers"/>
    ...
</bean>

<bean id="logoutSuccessHandler" class="your.custom.LogoutSuccessHandler"/>

<bean id="logoutHandlers" class="java.util.Arrays" factory-method="asList">
    <constructor-arg>
        <array>
            <bean class="your.custom.LogoutHandler"/>
            ...
        </array>
    </constructor-arg>
</bean>
于 2013-06-05T15:52:53.483 に答える