代码之家  ›  专栏  ›  技术社区  ›  Nishant

通过Web保护文件:基于细粒度授权的文件访问

  •  2
  • Nishant  · 技术社区  · 16 年前

    以公共、私人或保护模式上载到我的帐户
    以公共、私人或保护模式上载到部门帐户

    公共对任何人可见,仅对组或个人私有,对组织中的任何人受保护。

    组织的所有文件都存储在目录中,例如,/files/<组织ID>/,在文件服务器上 喜欢

    文件夹

    |+img1.jpg格式
    |+文档1.pdf
    +-- 808234
    |+文档2.pdf

    我正在数据库中存储文件路径和隐私级别。因此,我可以控制是否在给定页面上向用户显示指向文件URL的链接。

    问题是,我无法控制文件的URL。。。因此,如果有人在浏览器的地址栏中键入指向img1.jpg的URL,就无法知道登录用户是否有资格查看img1.jpg。

    有什么建议吗?


    它是一个Java应用程序。但是,Glassfish有一个单独的实例用作文件服务器。由于该应用尚未发布,因此我们愿意采用更好的文件访问策略。

    正在访问文件的用户可能已登录,也可能未登录。但是,如果我们知道正在访问的文件是私有的或共享的,我们总是可以通过重定向到登录页来验证用户。

    谢谢

    2 回复  |  直到 16 年前
        1
  •  1
  •   Sky Sanders    16 年前

    你提出了一个有趣的问题,你对这个问题的理解是正确的。

    这种情况的典型解决方案是将文件存储在internet无法访问的目录中,并使用受保护的HttpHandler将文件流式输出。

    有几种方法可以做到这一点,最简单的方法是将HttpHandler映射到一个不存在的目录,比如/downloads,然后从RequestUri中解析文件名,设置适当的内容类型并将文件写入Response。

    在这种情况下,HttpHandler受到保护,使您能够确定访问权限。

        2
  •  0
  •   Garrett    16 年前