我正在处理的网站(使用django)要求用户可以following a URL sent by email临时访问该功能的子集,而不必正确登录(即使用用户名和密码)。
当然,我知道此提案存在潜在的安全问题。因此,包含在URL中的令牌是随机生成的并存储在服务器上(而不是对用户名或类似的东西进行散列),并且到期。
此外,我想限制通过这样的令牌URL访问网站的用户的权限,这样他们只能访问一些(非常有限的)信息,而任何更实质性的操作都需要他们的凭据。 p>
我以相当粗略的方式实现了这一点:简单地说,不是通过令牌对用户进行身份验证,而是将其存储为会话变量,识别令牌的少数视图对其进行验证。
然而,拥有一个扩展的解决方案会很棒:例如,全局user.has_token
检查会很棒。但是,我无法想象如何实现更优雅的解决方案。
所以我的问题是:你将如何实现这样一个系统?例如,是否可以在django中临时分配或限制permissions?可能需要自定义middleware吗?
非常感谢任何帮助。非常感谢!
编辑:在下面的讨论中,我想进一步指出一个问题:在每个页面视图中通过中间件分配组是否有效?在运行时向用户对象添加属性是否可行(类似于上面的user.has_token
示例)?
答案 0 :(得分:0)
使用django组,您可以限制访问
以下链接为您提供了示例:
http://bradmontgomery.blogspot.com/2009/04/restricting-access-by-group-in-django.html