【发布时间】:2016-01-18 13:46:05
【问题描述】:
我已经实现了我自己的用户模型类,如下所示。请注意,它 不是 自定义 django 的 auth.User 模型。我是这个对象权限知识的新手,尤其是我的项目中需要的这个自定义用户模型。
您能否举一个在这种情况下添加每个对象权限的示例?
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin
class CustomUser(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(max_length=40, unique=True)
#.... other fields are omitted
class Article(models.Model):
title = models.CharField('title', max_length=120)
body = models.TextField('body')
author = models.ForeignKey(CustomUser)
现在,对象权限开始发挥作用。每个用户都可以创建/更新/删除/查看自己的文章对象,但只能查看其他人的文章,没有更新/删除的权限。
根据 Django 文档,模型级别的权限不适用于此处。如果文章被授予模型级别的更新权限,那么所有用户都可以更新其他人的文章。
我找到了 django-guardian。但是,这个自定义的 CustomUser 模型似乎没有希望了,因为它严重依赖 Django 的auth.User 模型!
https://django-guardian.readthedocs.org/en/v1.2/userguide/custom-user-model.html
- 我的案例是继承 AbstractBaseUser 而不是 AbstractUser;
- 这不适用于管理员,仅适用于我的后端代码逻辑;
- 我这里没有使用 Django REST API,但是如果 REST API 合适,请举个例子。
【问题讨论】:
-
您是否正在使用 Django Rest Framework?还是只有 Django?
-
您希望将其集成到 Django 管理中,还是仅在您自己的代码中使用?
-
已在更新中回答。
标签: django permissions