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
0
投稿
猜你喜欢
- FileUpload上传图片(图片不变形) 的实现方法,需要的朋友可以参考下。<style type="text/css&q
- 合并numpy中numpy中可以通过concatenate,指定参数axis=0 或者 axis=1,在纵轴和横轴上合并两个数组。impor
- 关于跨域这个话题,很早就答应过要分享,但是因为懒,一直拖着,直到D2上有人谈起了“完美跨域”。“跨域”应该已经算不上什么难题了,只是提起“完
- print 默认输出是换行的,如果要实现不换行需要在变量末尾加上逗号 ,#!/usr/bin/python # -*- coding: UT
- 字符串是日常开发中用到最多的数据类型之一,了解字符串首先要明白定界符。定界符有4种,单引号、双引号、heredoc、nowdoc,常使用的单
- jQuery中文入门指南,翻译加实例,jQuery的起点教程中文版译者:Keel此文以实例为基础一步步说明了jQuery的工作方式。现以中文
- 视图在django中,视图对WEB请求进行回应视图接收reqeust对象作为第一个参数,包含了请求的信息视图就是一个Python函数,被定义
- 所谓取模运算,就是计算两个数相除之后的余数,符号是%。如a % b就是计算a除以b的余数。用数学语言来描述,就是如果存在整数n和m,其中0
- 本文实例讲述了python实现的爬取电影下载链接功能。分享给大家供大家参考,具体如下:#!/usr/bin/python#coding=UT
- 本文介绍python如何进行截图保存的几种方法,在测试过程中,是有必要截图,特别是遇到错误的时候进行截图。结合Python其它模块如time
- 概述递归函数即直接或间接调用自身的函数,且递归过程中必须有一个明确的递归结束条件,称为递归出口。递归极其强大一点就是能够遍历任意的,不可预知
- 软删除简单的说,就是当执行删除操作的时候,不正真执行删除操作,而是在逻辑上删除一条记录。这样做的好处是可以统计数据,可以进行恢复操作等等。预
- 本文实例为大家分享了python使用turtle库绘制树的具体代码,供大家参考,具体内容如下# -*- coding: utf-8 -*-&
- CentOS7服务器中apache、php7以及mysql5.7的配置代码如下所示:yum upgradeyum install net-t
- 以前在工作中遇到一个问题,当表单发送的数据量很大时,就会报错。查阅MSDN了解到,原因是微软对用Request.Form()可接收的最大数据
- 本文实例讲述了Python Web框架之Django框架文件上传功能。分享给大家供大家参考,具体如下:上传方式:- Form表单上传文件-
- Template无疑是一个好东西,可以将字符串的格式固定下来,重复利用。同时Template也可以让开发人员可以分别考虑字符串的格式和其内容
- XMLHttpRequest 最近在 W3C 标准之路上又迈进了一步,W3C Web API&nbs
- 目录1.jupyter简介2.jupyter基础操作2.1windows更新pip库2.2jupyter安装2.3初次启动jupyter2.
- pycharm是一款很流行的编写Python程序的编程软件,这篇文章给大家介绍Pycharm使用教程。1、下载pycharmpycharm是