我有一个员工可以上传文件的系统。有以下三种方式
以公共、私人或保护模式上传到我的帐户
以公共、私人或保护模式上传至部门帐户
以公共、私有或保护模式上传到组织帐户
其中公共对任何人都可见,私有仅对组或个人而言并且对组织中的任何人都受保护。
组织的所有文件都存储在文件服务器上的 /files// 目录中
喜欢
files
+-- 234809
| +img1.jpg
| +doc1.pdf
+-- 808234
| +doc2.pdf
我将文件路径和隐私级别存储在数据库中。因此,我可以控制是否在给定页面上向用户显示文件 URL 的链接。
问题是,我无法控制文件的 URL...因此,如果有人在浏览器的地址栏中输入 img1.jpg 的 URL,则无法知道登录用户是否有资格查看 img1 .jpg。
有什么建议吗?
它是一个Java应用程序。但是,Glassfish 有一个单独的实例充当文件服务器。由于该应用程序尚未发布,因此我们愿意采用更好的文件访问策略。
访问文件的用户可能已登录,也可能未登录。但是,如果我们知道正在访问的文件是私有文件还是共享文件,那么我们始终可以通过重定向到登录页面来对用户进行身份验证。
Thanks
Nishant
你提出了一个有趣的问题,你对这个问题的理解是正确的。
根据提供内容的 IIS 版本,如果内容位于您的虚拟目录中,您甚至可能没有访问控制权。
此类场景的典型解决方案是将文件存储在无法通过 Internet 访问的目录中,并使用受保护的 HttpHandler 并将文件流式传输出去。
有多种方法可以实现此目的,最简单的是将 HttpHandler 映射到不存在的目录(例如 /downloads),并从 RequestUri 中解析文件名,设置正确的内容类型并将文件写入 Response。
在这种情况下,您的 HttpHandler 受到保护,使您能够确定访问权限。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)