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)
实操 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)
添加组:
把用户添加到相应的组和赋予权限:
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')