2016-10-07 2 views
1

을 로그 아웃 할 때 나는 각 요청에 대해 캐시를 지우려면 다음 필터 한 아래 로그 아웃 방법SpringMVC - 캐시를 삭제하는 방법에만 사용자가 현재

public class CacheControlFilter implements Filter { 

    private static final Logger logger = Logger.getLogger(CacheControlFilter.class); 


    @Override 
    public void doFilter(ServletRequest request, ServletResponse response, 
      FilterChain chain) throws IOException, ServletException { 

     HttpServletResponse resp = (HttpServletResponse) response; 


     resp.setDateHeader("Expires", 0); 
     resp.setHeader("Last-Modified", new Date().toString()); 
     resp.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0"); 
     resp.setHeader("Pragma", "no-cache"); 
     resp.setHeader("X-Content-Type-Options", "nosniff"); 
     resp.setHeader("X-Frame-Options", "DENY"); 
     chain.doFilter(request, response); 
    } 

찾아주세요 :

@RequestMapping(value = "/logout", method = RequestMethod.GET) 
    public String logout(ModelMap model, HttpServletRequest request) { 

    SecurityContextHolder.clearContext(); 
    request.getSession().invalidate(); 


    return Constants.LOGOUT; 

    } 

이 있습니까 각 요청 대신 사용자가 로그 아웃 할 때 캐시를 지우는 방법? 정적 파일 (css 파일, js 파일)을 캐시에 저장하고 사용자가 로그 아웃 할 때만 지우길 원합니다.

모든 조언을 환영합니다.

감사

+0

캐시? 'CacheControlFilter'는 아무것도 지우지 않습니다. – zeroflagL

+1

web.xml에서 경로가/logout 인 경우에만 필터를 실행하도록 지정할 수 있습니다. – Eric

+0

응답 헤더 캐시가 지워졌습니다 – user1999453

답변

0

/로그 아웃 URL에만 등에의 web.xml에 필터를 구성하십시오 :

<filter> 
     <filter-name>CacheControlFilter</filter-name> 
     <filter-class><YOUR_PACKAGE>.CacheControlFilter</filter-class> 
    </filter> 
    <filter-mapping> 
     <filter-name>CacheControlFilter</filter-name> 
     <url-pattern>/logout</url-pattern> 
    </filter-mapping> 

그리고

의 web.xml은이 링크를 참조 사용하지 않는 경우 :

https://www.mkyong.com/spring-mvc/how-to-register-a-servlet-filter-in-spring-mvc/

0

이니셜 라이저 클래스를 통해 캐시 필터를 등록 할 수 있습니다.

protected Filter[] getServletFilters() { 
    return new Filter[]{new CacheControlFilter()}; 
} 

행운

관련 문제