【问题标题】:How can I write my own permissions in django如何在 django 中编写自己的权限
【发布时间】:2018-12-27 09:33:28
【问题描述】:

我想在 Django 中编写自己的权限,我的意思是我想准确定义用户可以做什么或不能做什么,我已经阅读了这个enter link description here 但似乎 change_task_status 是在 Django 中预定义的。例如,我想准确定义用户可以访问视图的 get 方法,并且只能从数据库表的第 1 行到第 8 行访问,等等。我该怎么做?

编辑:

首先,我使用 Django 的 auth_permission 表中的默认权限执行此操作,对于每个模型,它都会在此表中创建添加/查看/更改/删除权限,我知道我可以将其用于我的目的。但我有两个问题,首先我不想使用默认权限类 od Django.contrib,auth 模型,因此我想创建自己的权限表(而不是 auth_permissions 我有 mapp_permissions)现在这对我来说是个问题新表没有填充默认权限,所以我需要自己定义权限我的意思是我必须说出 add_modelname 的含义,并且在我这样做之后我需要定义一些新权限,例如对于一个模型:user_x 有权限 view_modelname,用户也有这个权限,但是从存储在数据库 user_y 中的这个模型的数据中,只能看到 db 表的 1 到 8 的记录,而不是全部

编辑 2:

正如您在权限类评论中看到的那样:“它是 目前不可能说“玛丽只能改变有 某些状态或发布日期。"" 我怎样才能使它成为可能? 此外,Django 文件中应该有一个代码为机器定义,例如表中的 add_user 意味着什么

【问题讨论】:

  • and just from row 1 to 8 of the database table 是什么意思?上面的示例向您展示了一个用于编写权限的模板。您在模型上定义权限,然后检查该用户是否具有使用该功能的必要权限?您可以通过仪表板或迁移将权限应用于用户(我假设为第 1 到 8 行)。
  • 请检查我的编辑
  • @Annabelle 不确定您为什么不想使用 Django 身份验证权限表,但如果您确实想使用自定义权限表,则不能再使用模型 META 中定义的常用权限类,因为这些是在迁移期间添加到 auth 权限表中的。您将不得不推出自定义解决方案。至于您对第 1-8 行的第二个要求,这也是一个奇怪的要求,不属于当前权限框架提供的权限类型,但是由于您无论如何都会推出新的逻辑,您也可以在你自己的
  • @Annabelle 我的意思是,您可以编写一个 DRF 权限类来检查用户是否有权更改特定状态的对象。检查可以是用户是管理员还是普通用户。但话又说回来,如果您需要细粒度,您可以为权限创建一个单独的类并根据需要定义尽可能多的权限。本质上,我的意思是您可以让它们与原始权限框架并排工作,而不是替换它
  • @Annabelle 您应该将所有模型导入包的__init__.py 文件中。看看这个stackoverflow.com/questions/5534206/…

标签: python django django-rest-framework


【解决方案1】:

根据Edit 2,我看到你有一些与权限检查相关的业务逻辑,看看django-rules,我想这就是你要找的。​​p>

【讨论】:

  • 谢谢,现在我有一个小问题,你能先帮我解决一下吗?”我遇到的另一个问题是,为了我的项目,我使用了模型文件夹而不是 model.py 文件,现在权限类无法自动生成我的模型的添加/更改/删除/更新,我该如何定义在哪里查找我的模型?”
  • 您是否在models forlder 的init.py 中导入了模型? docs.djangoproject.com/en/2.1/topics/db/models/…
猜你喜欢
  • 2018-12-10
  • 2020-02-07
  • 2015-05-03
  • 1970-01-01
  • 2014-06-17
  • 2012-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多