我正在使用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);
}
}
}