在Django站点中使用任意密码密码保护任意页面的最佳方法是什么?

时间:2011-08-29 19:39:36

标签: django passwords

我有一个Django网站,人们可以上传和分享他们的文件。每个文件都有自己的页面。我想让人们能够为每个文件提供一个密码,以便人们只有在输入正确的密码时才能查看该文件的页面。基本上,用户将转到文件页面,如果该文件受密码保护,用户将看到“密码”表单而不是文件,一旦正确输入密码,用户就可以看到该文件。用户只需输入一次密码也很重要。

我的第一直觉是只在文件模型中添加“密码”字段,但我不确定让用户输入密码的最佳方法,一旦输入,让用户看到该文件的页面(I我想也许饼干会是最好的)。

这里有任何提示或最佳做法吗?是否有任何类似的现有应用程序?

1 个答案:

答案 0 :(得分:2)

如果每个文件都有密码,那么在文件模型中存储密码 hash 是合理的。我强烈建议您重新使用django.contrib.auth中的散列方法,而不是自己滚动。

为了保持用户对登录响应之外的文件的访问,您可以使用Django的内置会话框架:构建允许用户在会话对象中访问的文件列表。除非您希望同时为大量文件授权用户会话,否则这将很有效。

请注意,您可以将会话设置为使用cookie作为后端,这也将为您提供cookie的加密签名,可能比手动cookie更好。