开发者

Django如何实现RBAC权限管理

目录
  • 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='r编程oles'
    
    
    # 管理员表
    class Admin_user(mojavascriptdels.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.Fore开发者_JS教程ignKey(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 = mwww.devze.comodels.ManyToManyField(Roles,related_name='resources',null=True,blank=True)
    
    
        class Meta:
            db_table='resource'
    

    总结

    以上为个人经验,希望能给大http://www.devze.com家一个参考,也WMrFtw希望大家多多支持我们。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜