网络编程
位置:首页>> 网络编程>> Python编程>> Django如何实现RBAC权限管理

Django如何实现RBAC权限管理

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

标签:Django,RBAC,权限管理

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

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com