RBAC系统如何实现基于角色的权限精细化管理?

2026-05-19 20:011阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1053个文字,预计阅读时间需要5分钟。

RBAC系统如何实现基于角色的权限精细化管理?

RBAC基于角色的访问控制秘籍发布,无需自建目录。目录:RBAC-基于角色的访问控制-什么是RBAC-概念-Django的内置RBAC(六表)-图解-表关系-实操-登录admin操作-普通用户只能查看-添加到组

偷偷把RBAC基于角色的访问控制秘籍发出来,不需要自宫~

目录
  • RBAC-基于角色的访问控制
    • 什么是RBAC
      • 概念
    • Django的内置RBAC(六表)
      • 图解
      • 表关系
    • 实操
    • 登录admin操作
      • 普通用户只能查看
      • 添加到组里,增加修改权限
    • admin二次开发

RBAC-基于角色的访问控制 什么是RBAC 概念

RBAC 是基于角色的访问控制(Role-Based Access Control )在 RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便。

前面我们说到三大认证,比如权限,普通用户和管理员能够操作的接口就不一样,比如我们常见的视频软件,不开会员能看的视频寥寥无几,这就是权限的应用,但是这站在公司的角度是对外的权限,比如后台管理对公司内使用,公司内部的权限该如何分配?就用到了RBAC

对外权限针对用户:普通注册用户,会员,超级会员····

对内权限公司内部:使用RBAC的权限控制

比如公司内部有开发部、财政部、市场部、人事部、运营部、总裁办··· 这写部门的权限是不同的,比如人事部有招人的权力,开发部有查看修改提交代码的权力··· 所以通过将权限和角色(部门)绑定,而角色又赋予用户,所以该部门有多大的权力,部门下的员工就有什么样的权力···

总体而言,RBAC针对公司内部项目,后台管理开发居多

Django的内置RBAC(六表) 图解

权限三表

权限六表


表关系

django的admin自带rbac权限管理(表设计完成权限管理),6张表

用户表、组表(角色、部门)、权限表 ---> 三张

用户和组多对多关系,存在中间表

用户和权限多对多关系,存在中间表

组和权限多对多关系,存在中间表 -----> 三张

实操

models.py

from django.db import models class Book(models.Model): name = models.CharField(max_length=32) price = models.DecimalField(max_digits=5, decimal_places=2) author = models.CharField(max_length=32) # 对象描述,显示书名 def __str__(self): return self.name # 表名中文解释 class Meta: ''' verbose_name 顾名思义 起一个复杂点的名称,一般用来作中文解释 verbose_name_plural 顾名思义是一个复数名称,因中文没有复数 但django有时又会将用户的驼峰命名拆成单个词,给最后的词加复数,和用户的本义不符, 因些加了这样一个选项来处理尴尬 比如 Blog Articals 或是 分类管理s ''' # verbose_name = '图书表' verbose_name_plural = '图书表'

admin

from django.contrib import admin from .models import Book admin.site.register(Book) 登录admin操作




普通用户只能查看



添加到组里,增加修改权限




![image](img2022.cnblogs.com/blog/2608072/202204/2608072-20220407225423670-1053333751.png)
admin二次开发

初始样式

RBAC系统如何实现基于角色的权限精细化管理?

admin.py

from django.contrib import admin from .models import Book # Register your models here. class BookAdmin(admin.ModelAdmin): # 设置列表可显示的字段 list_display = ('name', 'price', 'author') # 设置过滤选项 list_filter = ('name', 'price') admin.site.register(Book, BookAdmin)

二次开发后的样式

本文共计1053个文字,预计阅读时间需要5分钟。

RBAC系统如何实现基于角色的权限精细化管理?

RBAC基于角色的访问控制秘籍发布,无需自建目录。目录:RBAC-基于角色的访问控制-什么是RBAC-概念-Django的内置RBAC(六表)-图解-表关系-实操-登录admin操作-普通用户只能查看-添加到组

偷偷把RBAC基于角色的访问控制秘籍发出来,不需要自宫~

目录
  • RBAC-基于角色的访问控制
    • 什么是RBAC
      • 概念
    • Django的内置RBAC(六表)
      • 图解
      • 表关系
    • 实操
    • 登录admin操作
      • 普通用户只能查看
      • 添加到组里,增加修改权限
    • admin二次开发

RBAC-基于角色的访问控制 什么是RBAC 概念

RBAC 是基于角色的访问控制(Role-Based Access Control )在 RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便。

前面我们说到三大认证,比如权限,普通用户和管理员能够操作的接口就不一样,比如我们常见的视频软件,不开会员能看的视频寥寥无几,这就是权限的应用,但是这站在公司的角度是对外的权限,比如后台管理对公司内使用,公司内部的权限该如何分配?就用到了RBAC

对外权限针对用户:普通注册用户,会员,超级会员····

对内权限公司内部:使用RBAC的权限控制

比如公司内部有开发部、财政部、市场部、人事部、运营部、总裁办··· 这写部门的权限是不同的,比如人事部有招人的权力,开发部有查看修改提交代码的权力··· 所以通过将权限和角色(部门)绑定,而角色又赋予用户,所以该部门有多大的权力,部门下的员工就有什么样的权力···

总体而言,RBAC针对公司内部项目,后台管理开发居多

Django的内置RBAC(六表) 图解

权限三表

权限六表


表关系

django的admin自带rbac权限管理(表设计完成权限管理),6张表

用户表、组表(角色、部门)、权限表 ---> 三张

用户和组多对多关系,存在中间表

用户和权限多对多关系,存在中间表

组和权限多对多关系,存在中间表 -----> 三张

实操

models.py

from django.db import models class Book(models.Model): name = models.CharField(max_length=32) price = models.DecimalField(max_digits=5, decimal_places=2) author = models.CharField(max_length=32) # 对象描述,显示书名 def __str__(self): return self.name # 表名中文解释 class Meta: ''' verbose_name 顾名思义 起一个复杂点的名称,一般用来作中文解释 verbose_name_plural 顾名思义是一个复数名称,因中文没有复数 但django有时又会将用户的驼峰命名拆成单个词,给最后的词加复数,和用户的本义不符, 因些加了这样一个选项来处理尴尬 比如 Blog Articals 或是 分类管理s ''' # verbose_name = '图书表' verbose_name_plural = '图书表'

admin

from django.contrib import admin from .models import Book admin.site.register(Book) 登录admin操作




普通用户只能查看



添加到组里,增加修改权限




![image](img2022.cnblogs.com/blog/2608072/202204/2608072-20220407225423670-1053333751.png)
admin二次开发

初始样式

RBAC系统如何实现基于角色的权限精细化管理?

admin.py

from django.contrib import admin from .models import Book # Register your models here. class BookAdmin(admin.ModelAdmin): # 设置列表可显示的字段 list_display = ('name', 'price', 'author') # 设置过滤选项 list_filter = ('name', 'price') admin.site.register(Book, BookAdmin)

二次开发后的样式