使用JSP / Tomcat私下提供文件?

时间:2015-04-09 21:26:20

标签: file jsp tomcat private

我正在编写一个JSP应用程序,该应用程序应允许用户登录(使用简单的用户名和密码检查对PostgreSQL数据库进行身份验证),并上传照片。图像应该是私有的,因为它们只能在用户登录时访问。注销后图像URL的副本不起作用。如何用Tomcat / JSP完成?

我不想将BLOB存储在我的数据库中。

2 个答案:

答案 0 :(得分:2)

您可以使用servlet过滤器。 假设你有像/ images /这样存储所有图像的网址,所以使用过滤器可以检查该用户的会话是否存活。

一些例子: example 1 example 2

答案 1 :(得分:1)

首先将图像存储在服务器上无法访问的文件夹中。

每当用户请求特定图像时 - 您将用户重定向到另一个接受图像请求的servlet。

此servlet将检查会话以查看用户是否已通过身份验证,并且该用户是请求该图像的用户,并且该用户可以访问该图像。

一旦servlet对用户和请求进行身份验证,它就会将图像复制到临时可访问文件夹,并将用户重定向到该图像。

您可以添加一些改进,例如在复制之前检查图像是否已经存在于临时文件夹中,以及"清洁作业"如果文件是在一个多小时前复制的,那么每小时运行并从临时文件夹中删除文件(您可以"触摸"您复制的任何文件)等。

还有两点:

  • 使用forward()(与sendRedirect()相比),用户将无法在地址栏中看到图像的静态链接。
  • 正如我在评论中所提到的:没有任何方法可以100%证明,因为用户可以下载图像,然后通过论坛,保管箱等分享。您所采取的所有措施都只会有所帮助减少这种行为 - 但不能完全消除。