【问题标题】:Restrict permissions after token-based authentication基于令牌的身份验证后限制权限
【发布时间】: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


    【解决方案1】:

    使用 django 组可以限制访问

    以下链接为您提供示例:

    http://bradmontgomery.blogspot.com/2009/04/restricting-access-by-group-in-django.html

    【讨论】:

    • 感谢您的快速回复!但是,组将是用户的固定属性,还是可以随时更改?
    • 您能详细说明一下吗?您是否建议在每个请求的基础上使用中间件中的 myuser.groups.add(group_x).remove()
    猜你喜欢
    • 2017-12-15
    • 2019-07-22
    • 2021-01-25
    • 1970-01-01
    • 2021-08-05
    • 2019-07-20
    • 2016-01-23
    • 2016-01-29
    • 1970-01-01
    相关资源
    最近更新 更多