【问题标题】:Show pdf only to authenticated users仅向经过身份验证的用户显示 pdf
【发布时间】:2010-10-20 18:01:00
【问题描述】:

我正在从旧网站构建一个网站,我需要展示很多 .pdf 文件。

我需要用户在看不到我的任何 .pdf 之前进行身份验证,但我不知道如何(而且我无法将我的 pdf 放入我的数据库中)。

我在 Python 中使用 Pylons。

感谢您的帮助。

如果你有任何问题,问我! :)

【问题讨论】:

    标签: python html pdf permissions pylons


    【解决方案1】:

    这是我在 Pylons 中如何做到这一点的尝试。我还没有对此进行测试,但应该有足够的链接让你继续前进。

    1. 在您的 HTTP 服务器上启用 X-SendFile(正如 Paul 所说,实现取决于服务器):Apache mod_xsendfile, Nginx equivalent
    2. 将 PDF 放在 Pylons 安装中的 /public 目录之外(我建议将目录放在与 Pylons 目录相同级别的目录)
    3. 为您的站点添加某种身份验证和授权。 Here 是一篇关于如何使用repoze.who(身份验证)和repoze.what(授权)的好文章
    4. 创建一个路由和控制器来处理您的 PDF 请求,这与任何其他路由和控制器一样。 (即 /pdfs/{filename}.pdf 的路径)
    5. 如果所有内容都已正确授权和验证,您可以为您正在使用的 x-sendfile(或等效文件)创建正确的标头。

    【讨论】:

      【解决方案2】:

      您想使用 X-Sendfile 标头发送这些文件。具体细节取决于您使用的 Http 服务器。

      【讨论】:

        【解决方案3】:

        Paul 对 X-Sendfile 的建议非常好 - 这确实是处理将文档返回给用户的好方法。 (为保罗 +1 :)

        至于前端,做这样的事情:

        1. 将您的 pdf 文件存储在网络无法访问的地方(例如 /secure)
        2. 提供一个类似于 /unsecure/filename.pdf 的 URL
        3. 让您的 HTTP 服务器(如果是 Apache,请参阅 Mod Rewrite)将该链接转换为 /normal/php/path/authenticator.php?file=filename.pdf
        4. authenticator.php 确认文件存在,用户是合法的(即通过 cookie),然后使用 X-Sendfile 返回 PDF。

        【讨论】:

        • 对于 Pylons,你要做的就是路由/控制器,显然 :)
        • @Ben - 是的,如果你真的知道如何在 Pylons 中做到这一点,我会支持你...我不是 Python 或 Pylons 程序员 :)
        【解决方案4】:

        也许带有 md5 密钥的文件名就足够了?

        48cd84ab06b0a18f3b6e024703cfd246-myfilename.pdf

        您可以使用 filename 和 datetime.now 来生成 md5 密钥。

        【讨论】:

          猜你喜欢
          • 2016-08-24
          • 1970-01-01
          • 2016-01-15
          • 2021-03-23
          • 1970-01-01
          • 2012-12-25
          • 2022-12-04
          • 1970-01-01
          • 2019-04-25
          相关资源
          最近更新 更多