복붙노트

[SPRING] 봄 보안 사용자 정의 로그 아웃 처리기

SPRING

봄 보안 사용자 정의 로그 아웃 처리기

내 보안 로그 아웃 처리기를 Spring Security의 LogoutFilter에 어떻게 추가 할 수 있습니까? 감사!

해결법

  1. ==============================

    1.다음 솔루션이 나에게 도움이 될 수 있습니다.

    다음 솔루션이 나에게 도움이 될 수 있습니다.

  2. ==============================

    2.Spring Security Forum에서이 게시물의 답변을 참조하십시오.

    Spring Security Forum에서이 게시물의 답변을 참조하십시오.

    <beans:bean id="logoutFilter" class="org.springframework.security.ui.logout.LogoutFilter">
        <custom-filter position="LOGOUT_FILTER"/>
        <beans:constructor-arg index="0" value="/logout.jsp"/>
        <beans:constructor-arg index="1">
            <beans:list>
                <beans:ref bean="securityContextLogoutHandler"/>
                <beans:ref bean="myLogoutHandler"/>
            </beans:list>
        </beans:constructor-arg>
    </beans:bean>
    
    <beans:bean id="securityContextLogoutHandler" class="org.springframework.security.ui.logout.SecurityContextLogoutHandler"/>
    
    <beans:bean id="myLogoutHandler" class="com.whatever.CustomLogoutHandler">
        <beans:property name="userCache" ref="userCache"/>
    </beans:bean>
    
    public class CustomLogoutHandler implements LogoutHandler {
        private UserCache userCache;
    
        public void logout(final HttpServletRequest request, final HttpServletResponse response, final Authentication authentication) {
            // ....
        }
    
        @Required
        public void setUserCache(final UserCache userCache) {
            this.userCache = userCache;
        }
    }
    
  3. ==============================

    3. 요소의 success-handler-ref 특성을 사용해야합니다.

    요소의 success-handler-ref 특성을 사용해야합니다.

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

    다른 해결책으로 로그 아웃 URL에 고유 한 필터를 구성 할 수 있습니다.

  4. from https://stackoverflow.com/questions/3112972/spring-security-customize-logout-handler by cc-by-sa and MIT license