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过滤txt文件内重复内容的方法

    Python过滤txt文件内重复内容的方法

    今天小编就为大家分享一篇Python过滤txt文件内重复内容的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Python实现的读写json文件功能示例

    Python实现的读写json文件功能示例

    这篇文章主要介绍了Python实现的读写json文件功能,结合实例形式分析了Python针对json文件进行读写的常见操作技巧与注意事项,需要的朋友可以参考下
    2018-06-06
  • python检查URL是否正常访问的小技巧

    python检查URL是否正常访问的小技巧

    检查一个URL是否正常很容易,如果检查2000个URL,或者是大批量的URL怎么办?这篇文章就为大家介绍了python检查URL是否正常访问的小技巧,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • Python判断Abundant Number的方法

    Python判断Abundant Number的方法

    这篇文章主要介绍了Python判断Abundant Number的方法,实例分析了Python针对盈数的判断技巧,需要的朋友可以参考下
    2015-06-06
  • Python检查ping终端的方法

    Python检查ping终端的方法

    今天小编就为大家分享一篇Python检查ping终端的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • TensorFlow模型保存/载入的两种方法

    TensorFlow模型保存/载入的两种方法

    这篇文章主要为大家详细介绍了TensorFlow 模型保存/载入的两种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • python3 sleep 延时秒 毫秒实例

    python3 sleep 延时秒 毫秒实例

    这篇文章主要介绍了python3 sleep 延时秒 毫秒实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python处理JSON时的值报错及编码报错的两则解决实录

    Python处理JSON时的值报错及编码报错的两则解决实录

    这篇文章主要介绍了Python处理JSON时的值报错及编码报错的两则解决实录,在这里还是想建议一下使用Python 3.x版本,Python 3默认的Unicode编码能在实际使用中为我们省去不少问题,需要的朋友可以参考下
    2016-06-06
  • Python中用sleep()方法操作时间的教程

    Python中用sleep()方法操作时间的教程

    这篇文章主要介绍了Python中用sleep()方法操作时间的教程,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-05-05
  • pytorch多进程加速及代码优化方法

    pytorch多进程加速及代码优化方法

    今天小编就为大家分享一篇pytorch多进程加速及代码优化方法。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08

最新评论