1

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

每个用户必须首先通过网关 servlet,然后将它们转发到适当的 servlet。我创建了一个 RequestDispatcher 并将其转发功能执行到正确的 servlet。

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

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

怎么做到呢?

谢谢你!

使用 Apache Tomcat 7

4

1 回答 1

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>
于 2013-03-27T16:56:08.973 回答