2013-03-27 2 views
1

사용자를 작업을 처리하는 많은 서블릿으로 전달하는 게이트웨이 sevlet이 있습니다.서블릿에 대한 액세스 제한

각 사용자는 먼저 게이트웨이 서블릿을 통과해야하며 그런 다음 적절한 서블릿으로 전달해야합니다. RequestDispatcher를 만들고 적절한 서블릿에 전달 함수를 실행합니다.

문제는 모든 서블릿이 공개되어있어 사용자가 실제로 원하는 서블릿을 실행하고 실행할 수 있다는 것입니다.

게이트웨이 서블릿에 대한 액세스 만 허용하고 다른 모든 액세스는 제한하려고합니다. 물론 게이트웨이가 서블릿으로 전달할 수 있도록 허용해야합니다.

어떻게 할 수 있습니까?

감사합니다. 7

+0

이 목적 – Abubakkar

+0

에 대한 필터를 사용할 수 있습니까? – ufk

+0

이것은 도움이 될 수 있습니다. http://www.oracle.com/technetwork/java/filters-137243.html – Abubakkar

답변

4

현재 사용자가 로그인되어 있는지 확인하기 위해 필터를 사용하면 세션을 선택하여 방법 userIsLoggedIn()를 직접 작성해야합니다 아파치 톰캣을 사용

속성 :

public class LoginFilter implements Filter { 

    public void doFilter(ServletRequest req, ServletResponse res, 
     FilterChain chain) throws IOException, ServletException { 

     if (userIsLoggedIn()) { 

     //process request normally, pass up the filter chain to the servlet: 
     chain.doFilter(req, res); 

     } else { 

     //go to login screen instead 
     RequestDispatcher dispatcher = getRequestDispatcher("login"); 
     dispatcher.forward(request, response); 
     } 
    } 
} 

에서 당신은 web.xml에, 당신은 당신의 필터를 선언해야합니다 : 당신이 더 많은 정보를 제공 할 수

<filter> 
    <filter-name>loginFilter</filter-name> 
    <filter-class> 
    com.foo.LoginFilter 
    </filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>loginFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping>