Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何限制使用Tomcat服务器访问文件?_Java_Jsp_Tomcat - Fatal编程技术网

Java 如何限制使用Tomcat服务器访问文件?

Java 如何限制使用Tomcat服务器访问文件?,java,jsp,tomcat,Java,Jsp,Tomcat,当用户需要与数据库交互时,我正在使用Java。它从验证器检查适当的日志信息 但现在我正在服务器上提供一个PDF文件。并非所有用户都应该有权访问此文件或此目录 我如何限制对它的访问 在我的天真理解中,我曾考虑过使用Java/JSP限制访问,但当用户实际获得服务器上指向文件的完整路径的URL时,任何人都可以访问它 对其使用Servlet过滤器。servlet筛选器应映射到URL以访问此PDF文件。例如: @WebFilter("/path/to/your/pdf/*") public class F

当用户需要与数据库交互时,我正在使用Java。它从验证器检查适当的日志信息

但现在我正在服务器上提供一个PDF文件。并非所有用户都应该有权访问此文件或此目录

我如何限制对它的访问


在我的天真理解中,我曾考虑过使用Java/JSP限制访问,但当用户实际获得服务器上指向文件的完整路径的URL时,任何人都可以访问它

对其使用Servlet过滤器。servlet筛选器应映射到URL以访问此PDF文件。例如:

@WebFilter("/path/to/your/pdf/*")
public class FileFilter implements Filter {
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
        throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;
        HttpSession session = request.getSession(false);
        if (session == null) {
            User user = (User)session.getAttribute("user");
            if (validateUserForPdfDownload(user)) {
                //user can download the file
                chain.doFilter(req, res);
            } else {
                //user must not download the file
                //redirect user to some URL
                response.sendRedirect(request.getContextPath() + "/index.html");
            }
        }
    }

    public boolean validateUserForPdfDownload(User user) {
        //define the logic to validate if user is able to download the file
    }
}
请注意,这是一种基本方法。更复杂的解决方案涉及使用安全框架来验证每个操作的用户身份验证和授权。您可以使用类似或的框架来满足此需求

更多信息:


除了身份验证之外,您还应该有一个权限系统。您应该定义一组权限,并且每个用户都应该拥有与之关联的这些权限的子集。您要保护的每个对象还应具有关联的权限。然后,您应该检查经过身份验证的用户是否具有服务对象所需的权限


这是总的想法。实际实现、权限类型、权限之间是否存在层次结构(例如,如果您具有“管理”权限,则您还具有“pdf访问”权限)诸如此类的内容都是由编写此文件的组织的需要决定的。

您的意思是您试图从存储在某个位置的本地计算机访问pdf文件,而此文件限制了权限?这个问题太广泛了。仔细阅读并详细描述您的问题以及您迄今为止尝试过的内容。@ericbn它并不宽泛。您可以使用servlet过滤器轻松地完成此操作。我尝试添加了更多信息,我认为servlet过滤器就是我要寻找的。您能给我指一些关于权限系统的更多文献或术语吗?