【发布时间】:2019-03-24 06:58:51
【问题描述】:
假设我有以下模型:
from django.db import models
class Environment(models.Model):
name = models.CharField(max_length=30, unique=True)
class Device(models.Model):
# (some other fields)
environment = models.ForeignKey(Environment, on_delete=models.CASCADE)
还有两个“权限级别”:
-
root:该级别的用户可以编辑和删除Devices -
regular_user:该级别的用户可以查看Devices
指定Environment 的每个用户都应具有root 或regular_user 权限级别,即。在环境 A 中,他可以是 root,在环境 B 中 - regular_user。
为了指定用户对所选环境具有一定的权限级别,我使用here 描述的解决方案(<permission_level_name>:<environment_id>,例如:root:1)。如果有助于解决问题,这可能会有所更改。
用户通过基于 Django REST 框架的 API 访问数据。
如何防止环境A中具有root权限级别的用户编辑(通过API)环境B中具有regular_user权限级别的Devices?
像django-guardian 这样的解决方案允许为每个Device 实例分配权限,而Django Permissions 允许为每个模型分配权限,但我正在寻找的是基于Device 实例属性的权限系统。
【问题讨论】:
标签: django django-rest-framework