javashiro 로그아웃 캐시 비우기

2307 단어 shirojava
지난편은springmvc를 사용하여 shiro 로그인 과정을 통합하여FormAuthenticationFilter 필터를 통해 사용자가 입력한 계정 비밀번호를 얻을 수 있습니다.
shiro는 광범위하게 사용되는 안전층 프레임워크로 xml 설정 방식을 통해spring과 틈새 없이 연결되고 사용자의 로그인/종료/권한 제어/쿠키 등 관리 시스템의 기초 기능을shiro에 맡겨 관리한다.
일반적으로 자바 WEB 관리 플랫폼 시스템에서 사용자가 시스템을 종료하기 전에 사용자 데이터를 지우고 연결을 닫지 않아도 쓰레기 데이터가 쌓이는 것을 방지할 수 있다.shiro는 LogoutFilter 필터를 제공한다. 우리는 LogoutFilter를 계승하고preHandle 방법을 다시 써서 캐시 제거 기능을 실현할 수 있다.
spring-shiro.xml:

 <!--   -->
 <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
  <property name="securityManager" ref="securityManager" />
  <property name="loginUrl" value="/b/login" />
  <property name="successUrl" value="/b" />
  <property name="filters">
   <map>
    <!-- -->
    <entry key="logout" value-ref="systemLogoutFilter" />
   </map>
  </property>
  <property name="filterChainDefinitions">
   <value>
    /b/login = authc
    /b/logout = logout
    /b/** = user
   </value>
  </property>
 </bean>
호출된 경로가/b/logout에 일치하면 SystemLogoutFilter 필터에 들어갑니다. SystemLogoutFilter는 LogoutFilter를 계승하고preHandle 방법을 다시 썼습니다.preHandle 방법에서 비워야 할 데이터를 실행합니다.

@Service
public class SystemLogoutFilter extends LogoutFilter {
 @Override
 protected boolean preHandle(ServletRequest request, ServletResponse response) throws Exception {
  // 


     Subject subject = getSubject(request, response);

  String redirectUrl = getRedirectUrl(request, response, subject);

  try {

   subject.logout();

  } catch (SessionException ise) {

   ise.printStackTrace();

  }

  issueRedirect(request, response, redirectUrl);

     // false , 

  return false;
 }
}
@Service 메모를 통해spring 용기를 사용하여 관리해야 합니다.spring-shiro에서.xml에서shiro 필터 직접 사용 설정

<entry key="logout" value-ref="systemLogoutFilter" />
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기