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中主键的几种表设计组合的实际应用效果
写在前面 前前后后忙忙碌碌,度过了新工作的三个月.博客许久未新,似乎对忙碌没有一点点防备.总结下来三个月不断的磨砺自己,努力从独乐乐转变到众乐乐,体会到不一样的是,连办公室的新玩意都能引起莫名的兴趣了 ...
随机推荐
- ZooKeeper设置开机启动
1 在init.d目录下新建脚本文件 进入到/etc/rc.d/init.d目录下,命令是: cd /etc/rc.d/init.d 新建一个名为zookeeper的文件,命令是: touch ...
- Integer类源码浅析
1.首先Integer提供了两类工具类,包括把一个int类型转成二进等, 其实执行转换算法只有一个方法: public static String toString(int i, int radix) ...
- [LeetCode]-algorithms-Longest Substring Without Repeating Characters
Given a string, find the length of the longest substring without repeating characters. For example, ...
- jQuery file upload cropper的 click .preview事件没有绑定成功
测试 修改https://github.com/tkvw/jQuery-File-Upload/blob/master/basic-plus.html var node = $('<p id=& ...
- leetcode-mid-math - 69. Sqrt(x)-NO
mycode memory error class Solution(object): def mySqrt(self, x): """ :type x: int : ...
- 阶段3 1.Mybatis_12.Mybatis注解开发_1 mybatis注解开发的环境搭建
注解开发是省了IUserDao.xml这个映射文件里面的配置 环境搭建 首先是packaging标签.输入jar 需要准备一个实体类.生成getter和setter还有toString方法 创建dao ...
- 阶段3 1.Mybatis_09.Mybatis的多表操作_5 完成user的一对多查询操作
定义List<Account> accounts,生成getter和setter 复制AccountTest类改名UserTest类 修改测试类 还没封装所以Account的list都是n ...
- 阶段3 1.Mybatis_07.Mybatis的连接池及事务_6 mybatis中的事务原理和自动提交设置
在实际的开发中,建议使用连接池的形式. JNDI的资料 H:\BaiDu\黑马传智JavaEE57期 2019最新基础+就业+在职加薪\讲义+笔记+资料\主流框架\31.会员版(2.0)-就业课(2. ...
- visual studio 在windows远程调试 linux 程序 cout 输出乱码
转载:https://www.cnblogs.com/findumars/p/6627255.html 反正是解决了. 以gcc为例,它有三个命令选项:-finput-charset=gb18030- ...
- 合理设置redis主从buffer 不错
背景 某次抢购时,一个redis集群的某个分片,从实例响应时间陡增到几十秒,报警后运维将其中一个本应该下线的slave下掉,问题减轻但没有解决,又把另一个正常的slave下线掉,问题消失. maste ...