2014-11-18 2 views
1

세션이 닫힌 후에 다시 사용자를 막으려합니다. 하지만 작동하지 않습니다. 어느 누구도이 일을하는 법을 제안합니다.세션이 닫힌 후 사용자가 다시 시작하지 못하도록 차단합니다.

로그 아웃 Action 클래스에서 나는

  response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1. 
      response.setHeader("Pragma", "no-cache"); // HTTP 1.0. 
      response.setDateHeader("Expires", 0); 
      mySession.removeAttribute("user_id"); 
      mySession.invalidate(); 

      return mapping.findForward(SUCCESS); 

이 때문에 인덱스 페이지로 사용자를 리디렉션이 코드를 썼다. 버튼을 누르면 뒤로 돌아가고 사용자는 이미 방문한 모든 페이지를 볼 수 있습니다.

이 문제를 방지하는 방법.

모든 JSP 페이지에 나는 사용자가 다시 가져 오는 것을 방지 할 수 아니에요에도이

 if (session.getAttribute("user_id") == null || session.getAttribute("user_id").equals("")) 
      { 
        response.sendRedirect("index.do"); 
      }    
      else 
     { 
      ......... 
     } 

같은 노력하고있어. 사용자가 어떤 작업을 수행하면 사용자 만 인덱스로 리디렉션됩니다. 도와주세요.

답변

0

더 나은 솔루션은 필터를 사용하여 애플리케이션에 대한 모든 요청을 처리합니다. 검증 사용자 세션에 대한 필터를 사용

http://www.coderanch.com/t/547172/Struts/filters-struts

예.

public void doFilter(final ServletRequest request, final ServletResponse res, final FilterChain chain) throws IOException, ServletException { 
     HttpServletRequest req = (HttpServletRequest) request; 

     if (req.getSession().getAttribute("user_id") == null || req.getSession().getAttribute("user_id").equals("")) { 
      HttpServletResponse response = (HttpServletResponse) res; 
      response.addHeader("Location", "/SessionTimeoutAction.do"); 
      response.sendError(HttpServletResponse.SC_TEMPORARY_REDIRECT); 
     } 


     chain.doFilter(request, res); 
    } 
관련 문제