RBAC介绍
RBAC 介绍(4星)
# RBAC:Role-Based Access Control -->基于角色的访问控制
# 公司内部系统,crm:客户关系管理,oa系统,自动化运维项目
# 原理:权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便
# Django的 Auth组件(app) 采用的认证规则就是RBAC
# 如何实现rbac,先看django的auth如何实现
-User表:存用户信息
-Permission表:存权限:发工资,招人
-Role表: 存角色:市场,销售,运营,开发,运维,测试。。。。
-用户和角色是多对多,中间表
-权限和角色是多对多,中间表
-用户和权限是多对多,中间表
# django的auth的表
auth_group:组表,角色表
auth_permission:权限表
auth_user:用户表
auth_group_permissions:角色和权限多对多中间表
auth_user_groups:用户和角色多对多中间表
auth_user_user_permissions:用户和权限多对多的中间表
# django有个后台管理admin,自带rbac,有的公司基于admin做二次开发(xadmin,simple-ui)
# 有的公司自己基于前后端分离实现rbac
-https://github.com/liqianglog/django-vue-admin
# 前后端混合的后台前端模板
X-admin:lay-ui+jq实现的纯静态页面(html,css,js),帮助我们快速开发后台管理系统
# 智慧大屏
https://gitee.com/kevin_chou/dataVIS.git
Django的内置RBAC(六表)
权限三表
权限六表
实操
models.py
from django.db import models
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
mobile = models.CharField(max_length=11, unique=True)
def __str__(self):
return self.username
class Book(models.Model):
name = models.CharField(max_length=64)
def __str__(self):
return self.name
class Car(models.Model):
name = models.CharField(max_length=64)
def __str__(self):
return self.name
admin.py
from . import models
from django.contrib.auth.admin import UserAdmin as DjangoUserAdmin
# 自定义User表后,admin界面管理User类
class UserAdmin(DjangoUserAdmin):
# 添加用户课操作字段
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('username', 'password1', 'password2', 'is_staff', 'mobile', 'groups', 'user_permissions'),
}),
)
# 展示用户呈现的字段
list_display = ('username', 'mobile', 'is_staff', 'is_active', 'is_superuser')
admin.site.register(models.User, UserAdmin)
admin.site.register(models.Book)
admin.site.register(models.Car)
这样就可以登陆到admin后台进行操作了