Java 限制对servlet的访问

Java 限制对servlet的访问,java,tomcat,servlets,restriction,Java,Tomcat,Servlets,Restriction,我有一个网关sevlet,它将用户转发给许多处理任务的servlet 每个用户必须首先通过网关servlet,然后它将它们转发到适当的servlet。 我创建了一个RequestDispatcher,并将它的forward函数执行到适当的servlet 问题是,所有servlet都是公开的,因此它们实际上可以由用户执行他们想要的任何servlet 我希望只允许访问网关servlet,并限制对所有其他servlet的访问。但是当然要允许网关转发到servlet 怎样才能做到呢 谢谢大家! 使用ap

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

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

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

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

怎样才能做到呢

谢谢大家!


使用apache tomcat 7

使用筛选器检查当前用户是否已登录,您需要通过检查会话属性自己编写方法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>

逻辑过滤器
com.foo.LoginFilter
逻辑过滤器
/*

使用筛选器检查当前用户是否已登录,您需要通过检查会话属性自己编写方法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>

逻辑过滤器
com.foo.LoginFilter
逻辑过滤器
/*

您可以为此目的使用过滤器您可以提供更多信息吗?这有助于让我知道您是如何实现它的,我也想了解一下SO servlet Filters wiki上有一个示例:您可以为此目的使用过滤器您可以提供更多信息吗?这有助于让我知道您是如何实现它的,为了便于学习,我还想知道SO servlet filters wiki上有一个示例: