Django项目中的实现rbac功能

本文介绍了如何在Django项目中实现基于角色的权限控制(RBAC)。通过RBAC,可以方便地管理用户权限,如在固定资产管理系统中,不同角色(如CTO、COO)拥有不同的操作权限。文章详细讲解了RBAC的流程,包括用户表、角色表、权限表等数据表的设计,并展示了实际操作步骤,包括创建RBAC应用、编写ORM、设置中间件、视图处理及前端页面的权限判断。最后,通过实例演示了不同用户登录后的权限显示效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是rbac
rbac翻译意思就是(Role-Based Access Contro)基于角色的权限控制

二、优势
1.将用户和权限的关系
2.易扩展,易于维护

比如张三李四需要用客户列表访问权限,如果上百个用户,单独分配权限会麻烦,如果单独放客户列表权限在销售角色里面,张三李四放到销售角色里就OK了

三、RBAC流程图
Django项目中的实现rbac功能

第一张:用户表
第二张:角色表
第三张表:用户表和角色表多对多的关系,一个用户可以有多个角色
第四张表:权限表
第五张表:权限表和角色表多对多的关系,多个权限可以放到一个角色里面

四、效果图
Django项目中的实现rbac功能

五、本章案例
背景:开发一个固定资产管理系统
实现功能:根据不同用户登陆分配不同权限,jack是CTO这个角色,CTO对所有页面有增删改查的权限,当jack登陆的时候,显示有增删改查的按钮。当登陆lucy,因为是COO的权限,有所有页面查询的权限,只能查看,无法添加修改删除。

1.在django中把rbac做成组件,到别的项目也可以直接拿来用
2.在项目中新创建一个名为rbac应用,创建命令startapp rbac
3.在rbac应用里mode.pyl写ORM,分别是账号表,角色表,权限表,权限组表

from django.db import models

# Create your models here.
class Account(models.Model):
    name=models.CharField(max_length=32)
    pwd=models.CharField(max_length=32)
    roles=models.ManyToManyField(to="Role")
    def __str__(self): return self.name

class Role(models.Model):
    title=models.CharField(max_length=32)
    permissions=models.ManyToManyField(to="Permission")
    def __str__(self): return self.title

c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值