Auth主件的(RBAC) 六表
1.RBAC 和Auth的区别
基于RBAC一般Djagno 会用 和Auth 相对来说高级一点
2.RBAC( role Based Accsess Control)的六表之间的数据传输
2.1 Django 采用的是RBAC 认证规则,RBAC 通常分为三表规则,五表规则, Django则才用的是六表规则
三 表: User >>>用户表
Group >>>角色表
Permission >>>权限表
Django 权限六表
五表:用户表,角色表,权限表,用户与角色关系表,角色权限关系表
六表:用户表,角色表,权限表,用户与角色关系表,角色权限关系表,用户与权限
permission :权限表
Group:角色表
fro m Django.contrib.auth.models import User
(1)继承AbstractUser 这个类
from django.db import models # Create your models here. # 重点: 如果我们自定义user表, 再另一个项目中采用原生的User表,完成数据库迁移时,可能会失败
#如何做*(1) 卸载Django 重新装
# (2) 将Djjango中的 contrib 下面的admin 下面的数据库迁移命令记录清空 from django.contrib.auth.models import AbstractUser class User(AbstractUser): #继承AbstractUuser)
mobile = models.CharField(max_length=11)
# 自定义创建表名
class Meta:
db_table = 'api_user'
verbose_name = '用户表'
verbose_name_plural = verbose_name def __str__(self):
return self.username # 用户表怎么访问 >>>权限表(permission) User下关联的外键字段是???user_permission
# 用户表怎么访问 >>>角色表(Group) >>User下的查询字段>groups
# 反向字段 权限表访问用户user_set related_name="user_set",
# 反向字段 角色表访问用户user_set related_name="user_set", # Group 访问权限表permission """
permissions = models.ManyToManyField(
Permission, >>>>正向 按字段 虽然没有命名 反之group_set
verbose_name=_('permissions'),
blank=True,
)
"""
from django.contrib.auth.models import User
# 1.自定义user表 """ class User(AbstractUser):
# 这里源码是注释掉的
Users within the Django authentication system are represented by this
model. Username, password and email are required. Other fields are optional. class Meta(AbstractUser.Meta):
swappable = 'AUTH_USER_MODEL'
#
"""
(2) 在settings 中进行配置
# 自定义User表的配置 指名不再用原来的django 表 而是用我们自己自定义的表
AUTH_USER_MODEL = 'api.user'
测试六表
Traceback (most recent call last):
File "D:\day74_djproj\script\t_model.py", line 10, in <module>
user = models.User.objects.first()
File "C:\Users\10243\AppData\Local\Programs\Python\Python36\lib\site-packages\django\db\models\manager.py", line 198, in __get__
cls._meta.swapped,
AttributeError: Manager isn't available; 'auth.User' has been swapped for 'api.user'
cls._meta.swapped,
AttributeError: Manager不可用;的身份验证。User已经被换成了api.user
错的原因在于
from django.contrib.auth.models import User
# 1.自定义user表
在被导入到模块中又导如了User 以至于 无法识别User
User表的正向反向
# 六表之间的测试 import os, django os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day74_djproj.settings")
django.setup()
from api import models
user = models.User.objects.first()
# print(user.username,type(user)) admin <class 'api.models.User'>
print(user,type(user)) # admin <class 'api.models.User'> 直接获取对象
print(user.groups.first().name) #ok
print(user.user_permissions.first().name) # Can add 用户表
Goup表的正向 反向
# 角色表的查询
from django.contrib.auth.models import Group
group = Group.objects.first()
print(group.name) # ok # 分组下的用户们
print(group.user_set.first().username) # 角色表差 权限表
print(group.permissions.first().name) # Can change 用户表
Permissions 表的正向反向
from django.contrib.auth.models import Permission
P_16 = Permission.objects.filter(pk=16).first()
print(P_16.user_set.first().username) # admin
p_17 = Permission.objects.filter(pk=17).first()
print(p_17.group_set.first().name) # 管理员
# 自定义User表的配置 指名不再用原来的django 表 而是用我们自己自定义的表
AUTH_USER_MODEL = 'api.user'
Auth主件的(RBAC) 六表的更多相关文章
- Bootstrap<基础六> 表单
Bootstrap 通过一些简单的 HTML 标签和扩展的类即可创建出不同样式的表单. 表单布局 Bootstrap 提供了下列类型的表单布局: 垂直表单(默认) 内联表单 水平表单 垂直或基本表单 ...
- thinkphp Auth认证类 比RBAC更好的权限认证方式(Auth类认证)
thinkphp Auth认证类 比RBAC更好的权限认证方式(Auth类认证) Auth 类已经在ThinkPHP代码仓库中存在很久了,但是因为一直没有出过它的教程, 很少人知道它, 它其实比 ...
- drf三大认证:认证组件-权限组件-权限六表-自定义认证组件的使用
三大认证工作原理简介 认证.权限.频率 源码分析: from rest_framework.views import APIView 源码分析入口: 内部的三大认证方法封装: 三大组件的原理分析: 权 ...
- 7) 项目准备流程 和 django权限六表
一.项目准备 1. 创建django项目 2. 创建数据库 —— init文件中声明mysql —— settings中配置数据库 import pymysql pymysql.install_as_ ...
- 不使用ASP.NET服务器端控件(包括form表单不加runat="server")来触发.cs里的事件(方法),(适用于有代码洁癖者)。
很多时候,我们使用服务器端控件写出的代码,会给我们生成一些很多我们看不懂的代码(初学者),但是有时候我们并不需要这些代码(业务需求不同),对于生成的一些代码感到多余.所以我就开始想,有没有一种可能:不 ...
- CPF 入门教程 - 控件布局(六)
CPF netcore跨平台桌面UI框架 系列教程 CPF 入门教程(一) CPF 入门教程 - 数据绑定和命令绑定(二) CPF 入门教程 - 样式和动画(三) CPF 入门教程 - 绘图(四) C ...
- ShardingJdbc-分表;分库;分库分表;读写分离;一主多从+分表;一主多从+分库分表;公共表;数据脱敏;分布式事务
目录 创建项目 分表 导包 表结构 Yml 分库 Yml Java 分库分表 数据库 Yml 读写分离 数据库 Yml 其他 只请求主库 读写分离判断逻辑代码 一主多从+分表 Yml 一主多从+分库分 ...
- 一套能体现 RBAC 的表结构设计
1.RBAC 概述 2.表结构设计 2.1.用户表 2.2.角色表 2.3.权限表 2.4.用户角色(关系)表 2.5.角色权限(关系)表 3.总结 1.RBAC 概述 RBAC(Role-Based ...
- 【数据库】Mysql中主键的几种表设计组合的实际应用效果
写在前面 前前后后忙忙碌碌,度过了新工作的三个月.博客许久未新,似乎对忙碌没有一点点防备.总结下来三个月不断的磨砺自己,努力从独乐乐转变到众乐乐,体会到不一样的是,连办公室的新玩意都能引起莫名的兴趣了 ...
随机推荐
- 【Python】Python读取文件报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0x99 in position 20: illegal multibyte sequence
环境描述 text.txt 今天的天气不错 是个皻的选择 读取文件的代码 #!/usr/bin/python #-*- coding:UTF-8 -*- f = open(r'D:\Python\Py ...
- libusb获取usb设备的idVendor(vid),idProduct(pid),以及Serial Number
发表于2015/6/23 21:55:11 4594人阅读 最近在做关于usb设备的项目,用到了libusb,发现关于这个的函数库的介绍,讲解很少,下面仅仅是简单展示一些基本的使用方法,以备后用. ...
- 使用HeapAnalyzer分析内存泄漏
从IBM网站下载ha433包,释放,执行ha433.jar文件 https://www.ibm.com/developerworks/mydeveloperworks/groups/service/h ...
- webrtp官方demo运行
Google官方提供的webrtc的demo对应的网站是https://webrtc.github.io/samples/ 上面的DEMO对我这种入门的人很有用,用chrome浏览器最新的版本直接可以 ...
- SpringMVC中mvc:view-controller的使用
1.重定向 <mvc:view-controller path="/" view-name="redirect:/admin/index"/> 即如 ...
- 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_3 Mybatis中编写dao实现类的使用-修改删除等其他操作
update和上面的Insert代码基本是一样的,只需要修改这里, 测试Update的方法 删除 findById 测试方法 findByName 测试方法 findTotal
- 阶段3 1.Mybatis_03.自定义Mybatis框架_5.自定义Mybatis的编码-创建两个默认实现类并分析类之间的关系
把XMLConfigBuilder的包名补全 这样我们就可以调用里面的loadConfiguration方法了 创建工厂实现类 实现SqlSessionFactory的接口 实现接口里面的方法 把cf ...
- 举例讲解Python中的死锁、可重入锁和互斥锁
举例讲解Python中的死锁.可重入锁和互斥锁 一.死锁 简单来说,死锁是一个资源被多次调用,而多次调用方都未能释放该资源就会造成死锁,这里结合例子说明下两种常见的死锁情况. 1.迭代死锁 该情况是一 ...
- Python2.7安装&配置环境变量
python安装版本为2.7 下载安装包,双击安装,一路按照提示进行. 安装完成后,配置环境变量. 我的电脑—属性--高级系统设置—高级—环境变量--Path--编辑(将安装路径粘贴进去),添加到安装 ...
- 2017-0ctf-babyheap
fastbin attack + unsortedbin attack + __malloc_hook 的基础利用 题目下载 : https://uaf.io/assets/0ctfbabyheap ...