RBAC(基于角色的访问控制)

内容概要

  • RBAC 简介
  • Django 内置的 RBAC表
  • 实操 django 自带的 admin 后台
  • admin 二次开发

内容详细

RBAC 简介

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

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

  • 对外针对用户的权限控制:普通注册用户,会员,超级会员····
  • 对内针对公司内部的权限控制:使用RBAC的权限控制

在公司一般就是用 python 来做公司内部使用的项目开发,内部使用的项目一般就是使用RBAC后台管理开发居多

例子:

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

Django 内置的 RBAC表

六张表:

  • 用户表 - (auth_user)
  • 角色表(组表) - (auth_group)
  • 权限表 - (auth_permission)
  • 用户与角色多对多关系表 - (auth_user_groups)
  • 角色与权限多对多关系表 - (auth_group_permissions)
  • 用户与权限多对多关系表 - (auth_user_user_permissions)

image

image

image

实操 django 自带的 admin 后台

在 models.py 中书写模型表类:

from django.db import models

class Book(models.Model):
    name = models.CharField(verbose_name='书名', max_length=32)
    price = models.DecimalField(verbose_name='价格', max_digits=5, decimal_places=2)
    class Meta:
        verbose_name_plural = '书籍表'

在应用下的 admin.py 文件中注册表

from django.contrib import admin
from app01.models import *


admin.site.register(User)

添加组:

image

把用户添加到相应的组和赋予权限:

image

admin 二次开发

让数据表可以展示更多字段和过滤字段

from django.contrib import admin
from app01.models import *

@admin.register(Book)
class EmployeAdmin(admin.ModelAdmin):
    list_display = ('name', 'price', 'publish',)
    # 设置过滤选项
    list_filter = ('name', 'price')

image

posted @ 2022-04-11 09:01  elijah_li  阅读(172)  评论(0编辑  收藏  举报
//一下两个链接最好自己保存下来,再上传到自己的博客园的“文件”选项中