RBAC基于角色的访问控制

一 什么是RBAC

概念

RBAC  是基于角色的访问控制(Role-Based Access Control )在 RBAC  中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便。

应用

# RBAC - Role-Based Access Control
# Django的 Auth组件 采用的认证规则就是RBAC# 1)像专门做人员权限管理的系统(CRM系统)都是公司内部使用,所以数据量都在10w一下,一般效率要求也不是很高
# 2)用户量极大的常规项目,会分两种用户:前台用户(三大认证) 和 后台用户(BRAC来管理)
# 结论:没有特殊要求的Django项目可以直接采用Auth组件的权限六表,不需要自定义六个表,也不需要断开表关系,单可能需要自定义User表

前后台权限控制

# 1)后台用户对各表操作,是后台项目完成的,我们可以直接借助admin后台项目(Django自带的)
# 2)后期也可以用xadmin框架来做后台用户权限管理# 3)前台用户的权限管理如何处理
#   定义了一堆数据接口的视图类,不同的登录用户是否能访问这些视图类,能就代表有权限,不能就代表无权限
#   前台用户权限用drf框架的 三大认证

二 Django的内置RBAC(六表)

权限三表

image

权限六表

image

三 实操

models.py

from django.db import modelsfrom django.contrib.auth.models import AbstractUser
class User(AbstractUser):mobile = models.CharField(max_length=11, unique=True)def __str__(self):return self.usernameclass Book(models.Model):name = models.CharField(max_length=64)def __str__(self):return self.nameclass Car(models.Model):name = models.CharField(max_length=64)def __str__(self):return self.name

admin.py

from . import modelsfrom django.contrib.auth.admin import UserAdmin as DjangoUserAdmin# 自定义User表后,admin界面管理User类
class UserAdmin(DjangoUserAdmin):# 添加用户课操作字段add_fieldsets = ((None, {'classes': ('wide',),'fields': ('username', 'password1', 'password2', 'is_staff', 'mobile', 'groups', 'user_permissions'),}),)# 展示用户呈现的字段list_display = ('username', 'mobile', 'is_staff', 'is_active', 'is_superuser')admin.site.register(models.User, UserAdmin)
admin.site.register(models.Book)
admin.site.register(models.Car)

这样就可以登陆到admin后台进行操作了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/324314.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全网最全fiddler使用教程和fiddler如何抓包(fiddler手机抓包)-笔者亲测

一、前言 抓包工具有很多,比如常用的抓包工具Httpwatch,通用的强大的抓包工具Wireshark.为什么使用fiddler?原因如下: 1.Wireshark是通用的抓包工具,但是比较庞大,对于只需要抓取http请求的应用来说,似乎…

MySQL-DQL

DQL是数据查询语言,用来查询数据库中表中的数据。 DQL语句编写顺序和执行顺序: 编写顺序:由上至下 执行顺序: 基本查询 1. 查询多个字段:SELECT 字段1,字段2,字段3... FROM 表名; 查询所有字段: SELECT*FR…

南某人:从工厂到品牌的华丽转身!

南某人,这个名字在中国的市场上已经响当当,但你知道吗?这个品牌其实并没有自己的工厂和门店。那么,他们是如何做到年收入高达40亿的呢? 起初,南某人和许多中国品牌一样,从生产保暖内衣起家。然…

es6中import * as导入方式

es6中import * as导入方式 一、问题和解决方法二、简介import * as三、ES6 模块化语法导入导出1.导入2.导出 一、问题和解决方法 问题报错: export ‘default’ (imported as ‘XLSX’) was not found in ‘xlsx’ (possible exports: CFB, SSF, parse_xlscfb, parse_zip, read…

云卷云舒:构建业务型电信智能运维方法

1 引言 智能运维(AIOps-Algorithmic IT Operations基于算法的IT运维)是人工智能技术在IT运维领域的运用,引用Gartner 的报告的一段话“未来几年,将近50%的企业将会在他们的业务和IT运维方面采用AIOps,远远高于今天的10…

【Java集合篇】HashMap、Hashtable 和 ConcurrentHashMap的区别

HashMap、Hashtable和ConcurrentHashMap的区别 ✔️ 三者区别✔️ 线程安全方面✔️继承关系方面✔️ 允不允许null值方面✔️为什么ConcurrentHashMap不允许null值? ✔️ 默认初始容量和扩容机制✔️遍历方式的内部实现上不同 ✔️ 三者区别 ✔️ 线程安全方面 HashMap是非线…

2023年12月23日~2024年1月5日周报(调试CNN-RWI代码、继续研读论文)

一、前言 上周对CNN-RWI论文进行了初步研读,但是只是了解了大概,很多问题也只是停留在表面,没有进行深入思考。 本周带着一系列问题继续研读CNN-RWI论文,并对代码进行初步学习。 问题描述: ①为什么阈值大小设置为网格…

案例092:基于微信小程序的二手闲置交易市场系统

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

深圳易图讯科技VR三维电子沙盘系统

易图讯VR三维电子沙盘系统是一种结合虚拟现实技术的地理信息系统。它通过高精度三维模型,真实再现了地理环境、建筑布局和地形地貌。用户可通过VR设备沉浸式体验这一虚拟世界,进行各种交互操作,如缩放、旋转、移动等。系统还支持实时数据更新…

【docker】—— Docker 简介

目录 (一)容器技术发展史 1、Jail 时代 2、云时代 3、云原生时代 (二)编排与容器的技术演进之路 1、DockerClient 2、RUNC&Shim 3、CRI-Containerd 4、CRI-O 5、Containerd (三)Docker 简介…

【OJ】单链表刷题

力扣刷题 1. 反转链表(206)1.1 题目描述1.2 题目分析1.2.1 头插法1.2.2 箭头反转 1.3 题目代码1.3.1 头插入1.3.2 箭头反转 2.合并两个有序链表(21)2.1 题目描述2.2 题目分析2.3 题目代码 1. 反转链表(206)…

【Docker】从Logo开始了解什么是docker

欢迎来到《小5讲堂》,大家好,我是全栈小5。 这是2024年第x篇文章,此篇文章是《Docker容器》序列文章,博主能力有限,理解水平有限,若有不对之处望指正! 在实际工作中,实际上有接触过容…