【问题标题】:Best way to forbidden access on object of other user in django;在 django 中禁止访问其他用户对象的最佳方法;
【发布时间】:2012-07-18 20:34:27
【问题描述】:

在 django 中是否有禁止访问其他用户对象的最佳做法?假设我可以通过路径中的 PK (some/path/to/object/PK/edit) 访问对象。禁止通过路径中的pk访问User1到User2对象的最佳方法是什么?

【问题讨论】:

    标签: django


    【解决方案1】:

    我通常会创建一个@owner_required 装饰器来包装具有此类要求的元素,逻辑如何工作取决于用例

    【讨论】:

    • 感谢您的想法,我在 SingleObjectMixin 的基础上编写了小型 mixin,以检查来自 request.user 的任何对象是否具有相同的所有者。
    【解决方案2】:

    您应该在您的用户模型中有一个关联,然后在您的控制器中您应该通过您的用户模型关联进行所有对象访问,因此每个用户只能访问每个自己的孩子。这是一个相关的帖子How to create new (unsaved) Django model with associations?

    【讨论】:

      【解决方案3】:

      如果您需要比 Django 开箱即用提供的更精细的安全性,那么您可能需要研究其中一种 ACL 产品。从 Django 1.2 开始,可以使用第三方插件添加对象/行级别的权限。有几个可供选择。请参阅此 SO 问题以获取建议:

      Django 1.2 object level permissions - third party solutions?

      【讨论】:

        猜你喜欢
        • 2018-04-27
        • 1970-01-01
        • 2015-08-13
        • 2023-03-30
        • 2014-12-16
        • 1970-01-01
        • 1970-01-01
        • 2010-11-05
        • 1970-01-01
        相关资源
        最近更新 更多