【问题标题】:limit access to servlets限制对 servlet 的访问
【发布时间】:2013-03-17 19:49:02
【问题描述】:

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

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

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

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

怎么办?

谢谢!

使用 apache tomcat 7

【问题讨论】:

标签: java tomcat servlets restriction


【解决方案1】:

使用过滤器检查当前用户是否登录,您需要自己编写方法 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 2012-01-13
    相关资源
    最近更新 更多