response.setContentType("text/html; charset=euc-kr"); PrintWriter out = response.getWriter(); out.println("<script>"); out.println("alert('로그인 후 이용 가능 합니다.')"); out.println("history.back()"); out.println("</script>"); out.flush(); throw new Exception();
특정조건인 경우 특정 path로 redirect 하게 해준다.
특정조건인 경우 특정 페이지를 내려준다. (이 경우는 리다이렉트가 아님) 로그아웃을 한 직후에 뒤로가기 버튼을 눌렀을때 다시 로그인이 되는일이 없도록 해야할것이다. 브라우저가 캐쉬에 있는 값을 다시 읽기 때문에 이런일이 발생하는것인데, 아래 코드를 스프링 설정파일에 추가하게 되면 뒤로가기를 눌렀을때 캐시가 남아있지 않게 되어서 다시 로그인을 하게끔 만들어준다. <!-- 컨트롤러로 요청이 가기전에 인터셉트 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/board/**"/> <!-- http://localhost:8181/ex/board/ 포함 및 그 하위 경로를 나타냄 --> <mvc:mapping path="/logout/**"/> <mvc:mapping path="/memberinfo/**"/> <mvc:exclude-mapping path="/list/**"/> <beans:bean class="com.javalec.ex.Interceptor.LoginCheckInterceptor"/> </mvc:interceptor> <!-- 아래 내용은 로그아웃후 뒤로가기버튼눌렀을때 다시 로그인 되는것을 방지하기 위함. --> <beans:bean id="webContentInterceptor" class="org.springframework.web.servlet.mvc.WebContentInterceptor"> <beans:property name="cacheSeconds" value="0" /> <beans:property name="useExpiresHeader" value="true" /> <beans:property name="useCacheControlHeader" value="true" /> <beans:property name="useCacheControlNoStore" value="true" /> <beans:property name="cacheMappings"> <beans:props> <!-- 아래 경로에만 뒤로가기 제한시킴. --> <beans:prop key="/index/**">86400</beans:prop> </beans:props> </beans:property> </beans:bean> </mvc:interceptors> 출처: http://simsimjae.tistory.com/8 [흔한 컴공의 코딩 블로그] 른록노트@ 방법 해당 Controller 헤더에 추가하기
참고사이트 https://okky.kr/article/363862 정말로 서버에서 모든 페이지에서 권한을 체크한다면 화면이 표시될 수 없지요.. 뒤로가기 버튼의 경우 해당 페이지 내용을 캐쉬에 보관하고 있는 상태이므로 서버에 요청이 넘어가지도 않고 브라우져수준에서 다시 보여주기만 하는 경우입니다. response.setHeader("cache-control","no-cache"); 해더에 위와 같은 정보를 추가한 페이지는 항상 서버에서 값을 가져옵니다. 권한체크영역의 모든 response에 포함되어 있어야 합니다. (로그아웃 페이지가 아니죠...) 공통 상위컨트롤러가 있다면 그쪽에서 추가하시면 될 듯 하고.. 아니면 필터를 사용해서 전 페이지에 캐쉬를 꺼버릴 수도 있겠군요... (대신 서버 성능은 더 나빠질지도..) 도움이 되셨길 바랍니다. 2010년 4월 28일 오전 11:34, Bacsu337 <>님의 말: 안녕하십니까? -- -- |