Django如何实现RBAC权限管理

 更新时间:2022年12月20日 14:39:58   作者:xiaodong_blogs  
这篇文章主要介绍了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'

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python绘制分类图的方法

    Python绘制分类图的方法

    这篇文章主要为大家详细介绍了Python绘制分类图的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • 使用Python实现压缩pptx的功能

    使用Python实现压缩pptx的功能

    当处理大型PPTX文件时,其中包含许多高分辨率照片时,文件大小可能会显著增加,为了解决这个问题,我们可以使用Python编程语言和python-pptx库来压缩PPTX文件中的照片,下面我们就来看看具体操作吧
    2024-02-02
  • python实现最小二乘法线性拟合

    python实现最小二乘法线性拟合

    这篇文章主要为大家详细介绍了python实现最小二乘法线性拟合,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • 解决python报错ImportError:urllib3 v2.0 only supports OpenSSL 1.1.1+

    解决python报错ImportError:urllib3 v2.0 only supports OpenSSL

    这篇文章主要介绍了解决python报错ImportError:urllib3 v2.0 only supports OpenSSL 1.1.1+的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • python中的opencv和PIL(pillow)转化操作

    python中的opencv和PIL(pillow)转化操作

    这篇文章主要介绍了python中的opencv和PIL(pillow)转化操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • python3 kubernetes api的使用示例

    python3 kubernetes api的使用示例

    这篇文章主要介绍了python3 kubernetes api的使用示例,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2021-01-01
  • python制作定时发送信息脚本的实现思路

    python制作定时发送信息脚本的实现思路

    这篇文章主要介绍了python实现企业微信定时发送文本消息的实例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Flask框架学习笔记之使用Flask实现表单开发详解

    Flask框架学习笔记之使用Flask实现表单开发详解

    这篇文章主要介绍了Flask框架学习笔记之使用Flask实现表单开发,结合实例形式较为详细的分析了flask框架表单模板定义、数据提交等相关操作技巧,需要的朋友可以参考下
    2019-08-08
  • Pycharm保存不能自动同步到远程服务器的解决方法

    Pycharm保存不能自动同步到远程服务器的解决方法

    今天小编就为大家分享一篇Pycharm保存不能自动同步到远程服务器的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Python异常信息的不同展现方法总结

    Python异常信息的不同展现方法总结

    在日常开发的过程中,当代码报错时,我们通常要不断打印、阅读traceback提示信息,来调试代码,这篇文章介绍了如何实现一个Exception Hooks,使得traceback模块的提示信息更加精确;同时还介绍了一些第三方库,这些库也提供了Exception Hooks的功能
    2022-11-11

最新评论