限制访问servlet

时间:2013-03-27 16:15:32

标签: java tomcat servlets restriction

我有一个网关sevlet,可以将用户转发给许多处理任务的servlet。

每个用户必须先通过网关servlet然后将它们转发到正确的servlet。 我创建一个RequestDispatcher并将它的正向函数执行到正确的servlet。

问题是所有servlet都是公开可用的,因此用户实际上可以去执行他们想要的任何servlet。

我想只允许访问网关servlet并限制对所有其他servlet的访问。但当然要允许网关转发到servlet。

怎么做?

谢谢你!

使用apache tomcat 7

1 个答案:

答案 0 :(得分: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>
相关问题