Django如何实现RBAC权限管理

作者:xiaodong_blogs 时间:2021-05-20 19:14:27 

Django RBAC权限管理

概述

RBAC(Role-Based Access Control,基于角色的访问控制),通过角色绑定权限,然后给用户划分角色。

比如说:

  • 一个用户拥有若干个角色,这个角色呢又拥有若干个权限,CEO,具有公司全局的权限;

  • 部门经理,具有部门全局的权限;

  • 部门主管,具有部门部分的权限;

  • 普通员工,具有部门一小部分权限。

不同的角色,能够获取的权限是不同的,角色的引入,让权限管理就会非常的灵活

流程图

Django如何实现RBAC权限管理

Django如何实现RBAC权限管理

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

标签:Django,RBAC,权限管理
0
投稿

猜你喜欢

  • Python/Django后端使用PIL Image生成头像缩略图

    2021-12-18 09:46:27
  • Python中类的继承代码实例

    2023-11-26 05:29:14
  • asp如何取回已忘记的密码?

    2010-05-13 16:33:00
  • ASP页面内VBScript和JScript的交互

    2007-09-11 13:49:00
  • web标准页面知识必备 Ⅰ

    2008-03-06 13:24:00
  • windowns使用PySpark环境配置和基本操作

    2021-04-12 06:43:06
  • PHP简单检测网址是否能够正常打开的方法

    2023-11-17 22:22:56
  • python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性

    2022-08-13 22:06:58
  • 人工智能学习Pytorch张量数据类型示例详解

    2021-09-13 01:33:08
  • 交互设计:简单

    2011-08-27 16:46:27
  • python实现员工管理系统

    2022-01-03 05:20:15
  • python语言基本语句用法总结

    2023-07-03 01:26:34
  • opencv-python+yolov3实现目标检测

    2022-01-18 06:45:17
  • python开发一款翻译工具

    2022-01-19 07:28:43
  • Django解决frame拒绝问题的方法

    2023-04-13 22:00:06
  • Win7的IIS7中ASP获得的系统日期格式为斜杠的解决办法

    2012-12-04 19:57:33
  • python实现斐波那契递归函数的方法

    2022-03-22 19:54:49
  • Oracle 数据库操作技巧集

    2010-07-26 12:49:00
  • Mysql数据库备份和还原常用的命令

    2011-12-01 10:41:54
  • python3使用腾讯企业邮箱发送邮件的实例

    2023-09-29 14:31:05
  • asp之家 网络编程 m.aspxhome.com