标签:object ram mob view 设置 定义 角色 turn mamicode
from rest_framework.views import APIView
基于用户权限访问控制的认证(RBAC):Role-Based-Access-Control;基于auth的认证规则(了解)。
Django框架采用的是RBAC认证规则:通常分为:三表规则、五表规则、Django采用的是六表规则。
三表:用户表、角色表、权限表
五表:用户表、角色表、权限表、用户角色关系表、角色权限关系表、用户权限关系表
六表:用户表、角色表、权限表、用户角色关系表、角色权限关系表、用户权限关系表
用户表:角色groups,权限user_permissions
角色表:用户user_set,权限permissions
权限表:用户user_set,角色group_set
重点:如果自定义User表后,再另一个项目中采用原生User表,完成数据库迁移时,可能失败。
解决的办法:
(1)、卸载Django,重新安装(源码问题)
(2)、将django.contrib下面的admin、auth下的数据迁移记录文件全部清空
from django.contrib.auth.models import AbstractUser,User
from django.contrib.auth.models import AbstractUser class User(AbstractUser): mobile = models.CharField(max_length=11, unique=True)#设置成唯一的
class Meta: db_table = ‘api_user‘ verbose_name = ‘用户表‘ verbose_name_plural = verbose_name def __str__(self): return self.username
>> python3 manage.py makemigrations >> python3 manage.py migrate >> #创建超级用户 >>> python3 manage.py createsuperuser >> admin admin123
在settings.py下面输入,告诉django系统自己创建自定义的用户表。
AUTH_USER_MODEL = "api/User"
# django脚本话启动 import os, django os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dg_proj.settings") django.setup() from api import models user = models.User.objects.first() # type: models.User print(user.username) print(user.groups.first().name) print(user.user_permissions.first().name)
from django.contrib.auth.models import Group
group = Group.objects.first()
# print(group.name)
# print(group.user_set.first().username)
# print(group.permissions.first().name)
def perform_authentication(self, request):
drf三大认证:认证组件-权限组件-权限六表-自定义认证组件的使用
标签:object ram mob view 设置 定义 角色 turn mamicode
原文地址:https://www.cnblogs.com/Gaimo/p/11715775.html