2013-08-09 2 views
4

스프링 보안을 사용하고 있으며이 다시 버튼이나 브라우저 문제를 해결하는 방법을 궁금합니다.스프링 보안을 사용하여 다시 버튼을 처리하는 방법

내가 로그인 한 후 뒤로 버튼을 클릭하면 문제가 생깁니다. 다시 로그인 페이지로갑니다. 뒤로 버튼을 클릭해도 로그인 한 홈 페이지에만 머물러 있다면 아주 좋을 것입니다.

동일해야합니다. 로그 아웃 한 경우 뒤로 버튼을 클릭 할 때와 같지 않아야합니다. 다시 로그인 한 홈 페이지입니다. 이 문제를 해결하기 위해 무엇을해야할지 모르겠습니다. 나는 브라우저 캐시 페이지를 알고 있지만 페이스 북이나 야후와 같은 표준 웹 사이트를 사용할 때, 이미 거기에 대한 해결책이있는 것처럼 보입니다. 방향이나 정보가 도움이 될 것입니다.?

답변

5

문제는 브라우저 캐시에서 발생합니다. 여러 가지 방법으로 비활성화 할 수 있습니다 :

모든 페이지에 대한
  • 구성 스프링 MVC 인터셉터 :
<mvc:annotation-driven/> 

    <mvc:interceptors> 
     <mvc:interceptor> 
      <mvc:mapping path="/**/*"/> 
      <bean id="webContentInterceptor" class="org.springframework.web.servlet.mvc.WebContentInterceptor"> 
       <property name="cacheSeconds" value="0"/> 
       <property name="useExpiresHeader" value="true"/> 
       <property name="useCacheControlHeader" value="true"/> 
       <property name="useCacheControlNoStore" value="true"/> 
      </bean> 
     </mvc:interceptor> 
    </mvc:interceptors> 
  • 통화 응답 방법 :
response.setHeader("Pragma", "no-cache"); 
    response.setHeader("Cache-Control", "no-cache"); 
    response.setDateHeader("Expires", 0); 
  • 추가 메타 태그를 해당 페이지에 추가 :
<meta http-equiv="Pragma" content="no-cache"> 
    <meta http-equiv="Cache-Control" content="no-cache"> 
    <meta http-equiv="Expires" content="Sat, 01 Dec 2001 00:00:00 GMT"> 
+0

을하지만, u는 앞뒤로 수행 할 때 더 요청이 도움이 어떻게 ... 서버로 보낼 수 없습니다 .. –

+0

로컬 캐시를 사용하는 대신 브라우저가 요청을 수행하도록합니다. –

+0

아니요, 이렇게해도 브라우저가 캐시에이 페이지를 저장하지 않도록합니다. 그래서 다시 버튼을 누르면 브라우저가 한 번만 더 요청하면 페이지가 표시됩니다. –

1

는 당신이 시도 했 봄 보안의 cache control 내장 :

@EnableWebSecurity 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http 
     // ... 
     .headers() 
     .defaultsDisabled() 
     .cacheControl(); 
    } 
} 
관련 문제