我正在建立一个注册用户可以上传文件的网站。然后通过Apache提供这些文件。只有登录的用户才能访问这些文件。
我已阅读this page但似乎每次使用不同类型的登录信息时,人们都必须登录两次以访问网站和媒体。
有没有解决方法或是否有其他方法限制使用Django身份验证数据库访问Apache提供的静态媒体?
我正在使用mod_python。
编辑:在阅读了Van Gale的回答并this后,我最终解决了这个问题:
答案 0 :(得分:10)
通常的做法是将特殊标头传回Web服务器。
您可以使用nginx使用x-accel-redirect执行此操作,如此Django snippet。
对于Apache,使用mod_xsendfile模块(Django用户邮件列表上的discussion and examples)应该非常相似。
答案 1 :(得分:2)
如果您可以自由地从Apache切换到lighttpd,那么最直接的解决方案就是使用mod_secdownload,它可以完全按照您的需要进行操作,即在提供实际服务时提供应用程序身份验证文件通过网络服务器。
但是,如果您遇到Apache,那么我建议mod_auth_token,这里他们提到PHP,但您可以用Python或任何其他语言生成令牌。使用mod_auth_token,您将能够在应用程序中生成令牌,然后让Web服务器使用该令牌为静态文件提供服务。