Django如何实现RBAC权限管理
作者:xiaodong_blogs 发布时间:2021-05-20 19:14:27
标签:Django,RBAC,权限管理
Django RBAC权限管理
概述
RBAC(Role-Based Access Control,基于角色的访问控制),通过角色绑定权限,然后给用户划分角色。
比如说:
一个用户拥有若干个角色,这个角色呢又拥有若干个权限,CEO,具有公司全局的权限;
部门经理,具有部门全局的权限;
部门主管,具有部门部分的权限;
普通员工,具有部门一小部分权限。
不同的角色,能够获取的权限是不同的,角色的引入,让权限管理就会非常的灵活
流程图
models.py
资源表和角色表是多对多关系
from django.db import models
# Create your models here.
# 角色表
class Roles(models.Model):
name = models.CharField(max_length=50)
status = models.BooleanField(default=True)
class Meta:
db_table='roles'
# 管理员表
class Admin_user(models.Model):
username = models.CharField(max_length=50,verbose_name='用户名')
password = models.CharField(max_length=200,verbose_name='密码')
pic = models.CharField(max_length=200,default='',verbose_name='头像')
status = models.BooleanField(default=True,verbose_name='状态') # 状态
supper = models.BooleanField(default=False,verbose_name='是否为超级管理员') # 是否为超级管理员
role = models.ForeignKey(Roles,on_delete=models.CASCADE)
class Meta:
db_table='admin_user'
# 资源表
class Resource(models.Model):
name = models.CharField(max_length=50)
status = models.BooleanField(default=True)
url = models.CharField(max_length=50,default='')
level = models.IntegerField()
pid = models.ForeignKey('self',on_delete=models.SET_NULL,null=True,blank=True,related_name='subs')
roles = models.ManyToManyField(Roles,related_name='resources',null=True,blank=True)
class Meta:
db_table='resource'
来源:https://blog.csdn.net/weixin_55555564/article/details/119949654


猜你喜欢
- 问题你想重新加载已经加载的模块,因为你对其源码进行了修改。解决方案使用imp.reload()来重新加载先前加载的模块。举个例子:>&
- 基本思路就是,使用MIMEMultipart来标示这个邮件是多个部分组成的,然后attach各个部分。如果是附件,则add_header加入
- 在多个文件或者不同语言协同的项目中,python脚本经常需要从命令行直接读取参数。万能的python就自带了argprase包使得这一工作变
- 有一台windows服务器上跑着mysql的一些应用,现在需要将mysql的数据每天备份,并通过ftp上传到指定的存储服务器上要是在linu
- 本文实例讲述了Python实现带参数的用户验证功能装饰器。分享给大家供大家参考,具体如下:user_list = [ {'
- 将转储设备加入到SQL Server备份数据库的地方。在SEM中转储设备是可见性的,并且在设备上的信息被存储在主要数据库的sysdevice
- 本文实例讲述了Symfony2实现在controller中获取url的方法。分享给大家供大家参考,具体如下:// 假设当前URL地址是htt
- 本文实例为大家分享了python读取Excel实例的具体代码,供大家参考,具体内容如下1.操作步骤:(1)安装python官方Excel库-
- FrontPage服务器扩展可以做以下工作:(1),保存和检索Web服务器的文件;(2),远程执行所有文件管理操作;(3),改名或移动文件时
- 本文实例讲述了kNN算法python实现和简单数字识别的方法。分享给大家供大家参考。具体如下:kNN算法算法优缺点:优点:精度高、对异常值不
- python中return不返回值是因为你没有将返回的值取出来。解决方法:调用函数,将函数的返回值赋给一个变量,输出这个变量就可以看到函数的
- 什么是迭代(iteration)呢?给定一个list或者tuple,通过for循环来遍历这个list或者tuple、这种遍历就是迭代(ite
- 方法一:<code class="language-python">""" 根
- 1、查看当前数据库支出的存储引擎方法1:mysql> show engines \G;************************
- 今天来研究python中moviepy模块的用途近来有大量处理视频的需求,常会碰到一个问题是下载的视频音量过小,会需要将它调大声,虽然有在线
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN&
- 笔者小白在收集印刷体汉字的深度学习训练集的时候,一开始就遇到的了一个十分棘手的问题,就是如何获取神经网络的训练集数据。通过上网搜素,笔者没有
- 由于个人能力有限,文章中难免会出现错误或遗漏的地方,敬请谅解!同时欢迎你指出,以便我能及时修改,以免误导下一个看官。最后希望本文能给你带来一
- 一、使用+号添加列表元素一般情况下两个列表合并起来也是一种添加元素的方法,只要使用+号直接进行运算就可以了,下面是演示代码。name1 =
- 1、有时候我们可能想让字符串倒序输出,下面给出几种方法方法一:通过索引的方法>>> strA = "abcdeg