【发布时间】:2011-03-04 16:32:51
【问题描述】:
我正在开发的网站(使用 django)要求用户可以通过 following a URL sent by email 临时访问功能的子集,而不必正确登录(即使用用户名和密码)。
当然,我知道此提案可能存在安全问题。因此,包含在 url 中的令牌是随机生成并存储在服务器上(而不是对用户名或类似的东西进行哈希处理),并过期。
此外,我想限制用户通过此类令牌 URL 访问网站的权限,以便他们只能访问一些(非常有限的)信息,而任何更实质性的操作都需要他们的凭据。
我以一种相当粗略的方式实现了这一点:简而言之,它不是通过令牌来验证用户,而是存储为会话变量,并且识别令牌的少数视图会验证它。
但是,如果有一个扩展的解决方案,那就太好了:例如,全局 user.has_token 检查会很棒。但是,我无法想象如何实现更优雅的解决方案。
所以我的问题是:您将如何实施这样的系统?例如,是否可以在 django 中临时分配或限制permissions?这里可能需要自定义middleware 吗?
任何帮助将不胜感激。非常感谢!
编辑:在下面的讨论之后,我想进一步说明一个问题:在每个页面视图上通过中间件分配组是否有效?在运行时向用户对象添加属性是否可行(类似于上面的user.has_token 示例)?
【问题讨论】:
标签: django authentication permissions