过滤tomcat webapp目录之外的静态内容

时间:2014-12-19 14:56:03

标签: java tomcat servlets servlet-filters

我正在使用tomcat 7.0,在我的server.xml中我有这个:

<Context docBase="C:/xampp/tomcat/temp" path="/testapp/files" />

允许用户下载放在/ temp目录中的文件。但是,我还想限制一些用户根据用户角色下载文件。我在webapp / WEB-INF / web.xml中描述我的过滤器,如下所示:

  <filter>
  <filter-name>DownloadFilter</filter-name>
  <filter-class>Main.downloadFilter</filter-class>   
  </filter>

  <filter-mapping>
  <filter-name>DownloadFilter</filter-name>
  <url-pattern>/files</url-pattern>
  </filter-mapping>

过滤器显然可以使用,因为我在启动服务器时没有出错,但是,在下载文件时不会应用它,因为我在过滤器中放置了一个System.out.println语句,这个永远不会调用语句。

这是过滤器doFilter()代码

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
     HttpServletRequest req = (HttpServletRequest) request;             
     System.out.println(req.getRemoteUser());


    if (req.isUserInRole("freeuser")==true){
        //check in DB if downloaded 2 today. CLEAR PAST DAYS. IF NOT DOWNLOADED - FILTER, ELSE NOT.
          String user = req.getRemoteUser(); 
        Database db = new Database();
        if (db.checkDownloadLimit(user)==false){
            chain.doFilter(request, response);

        }
    }

}

0 个答案:

没有答案