1

我正在用 JSP 开发一个网站(一个教育系统),它有不同的用户,具有不同的可访问性和优先级(包括教师、学生、经理......)现在我想向这个网站添加一些文件(例如一些 pdf) ,只有一组用户(如教师)登录系统后才能下载。现在我的问题是如何通过直接在地址栏中输入文件地址来防止其他人下载它们?换句话说,我不希望用户通过输入 URL 直接访问这些文件

提前致谢

4

3 回答 3

2

您不能通过输入文件的 URI 来阻止人们下载文件。这就是网络的工作原理。(如果您不希望任何人下载某些内容,请不要将其放在会提供 URI 的地方)。

但是,听起来您的问题是“防止无权下载文件的人下载文件”,这是一个完全不同的问题。

解决此类问题有两种基本方法。

仅通过脚本使文件可用

首先,不要将文件保存在 webroot 下。然后编写一个脚本:

  1. 检查用户想要下载的文件(例如通过查询字符串参数)
  2. 检查用户是否经过身份验证
  3. 检查用户是否有权下载文件
  4. 识别文件类型并发送合适的 Content-Type 标头
  5. 读取文件的内容并输出

配置您的 Web 服务器以执行 auth/authz

具体情况取决于您使用的 Web 服务器软件。我不知道是否有任何方法可以告诉任何支持 JSP 的服务器使用您正在使用的任何 Java 登录系统执行 auth/authz,但我过去使用 Apache/mod_perl 完成了它。

于 2012-12-07T11:59:03.970 回答
1

谁说您甚至需要在 URL 上提供您的 PDF?

您可以有一个受密码保护的页面,例如servepdf.jsp...检查一个人是否已登录。

如果他们已登录,则您可以将参数传递给页面,例如servepdf.jsp?pdf=HGJDF9798734FKJHKHJFSF(存储在数据库中的某种唯一 ID)从 Web 根目录之外的目录(用户通常无法在该目录中获取文件)到达)。

Could that be an option?

于 2012-12-07T12:00:31.437 回答
0

Your best bet is to setup a symbolic link and use .htaccess to redirect depending on your preferences.

于 2012-12-07T13:43:27.853 回答