【问题标题】:Differences between various permission levels in DjangoDjango中各种权限级别的区别
【发布时间】:2012-05-17 08:02:29
【问题描述】:

据我所知,在 django 中可以使用 3 个权限级别(无论是通过 django 本身还是通过使用 3rd 方应用程序)。 1) 基于模型的权限 2) 基于对象的权限 3) 基于行的权限

如果你能告诉我这 3 级权限系统之间的确切区别,那就太好了。

【问题讨论】:

标签: django permissions system authentication


【解决方案1】:

不确定你从哪里得到的信息,但它甚至不是完全正确的。 Django 在技术上没有 any 权限系统。 auth contrib 应用程序添加了一个“权限”系统,但它是可选的,可以完全替换为其他东西。 admin 应用程序(也是一个 contrib 包,并且是可选的)使用 auth,所以如果你在谈论 Django 管理员,或者在你自己的应用程序中使用 auth 包,那么我们可以谈谈。

auth 中,您有Users、Groups 和Permissions。 Users 具有“超级用户”或“常规”用户风格,当您运行 syncdb 时,项目中的每个模型都会自动获得三个 Permissions(auth 包含在 INSTALLED_APPS 中):can_add、can_change、和can_delete。 Users 标记为“超级用户”(is_superuser == True),可以对任何模型执行任何操作。其他用户需要明确分配给他们Permissions。此外,Groups 可能已经分配了Permissions,然后,分配给该Group 的任何User 都会继承这些权限。

因此,用户可能无法对任何模型执行任何操作,无法对某些或所有模型进行添加、更改或删除功能的某种组合,也无法完全访问对任何模型执行任何操作。在“实例”的意义上,没有“基于对象”权限的概念。您可以编辑模型的每个实例,也可以不编辑。也没有“基于行”权限的概念。无论如何,数据库表中的一行只是模型的一个实例。

【讨论】:

  • 但是根据下面的链接,我们有基于对象的权限。 “Django-Authority”和“Django-Guardian”是可用于提供除基于模型的级别之外的权限级别的应用程序的一些示例。 djangopackages.com/grids/g/perms
  • 这是一个完全独立的包,与 Django 没有任何关系,除了它与 Django 一起工作。就像我说的,auth 包可以完全用其他东西代替,或者只是用其他东西补充。但是,到那时,我们不再谈论 Django。
  • 是的!我知道这一点。这就是我在原帖中提到 3rd 方应用程序的原因。现在,我真的需要知道这些权限级别之间的区别。目前哪个包最流行和最稳定?
  • 哦,换句话说,这个问题应该关闭,因为“这个问题不适合我们的问答格式。我们希望答案通常涉及事实、参考资料或特定专业知识;这个问题可能会征求意见、辩论、争论、投票或扩展讨论。”
  • 我在回答中解释了不同之处:没有。 “对象”是关于 Python 如何看待它的。 “行”是指数据库如何查看它。但在这种情况下,它们基本上是一样的。
猜你喜欢
  • 2019-07-29
  • 1970-01-01
  • 2014-07-19
  • 1970-01-01
  • 2020-06-08
  • 2015-05-07
  • 2014-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多