10、RBAC

一、RBAC介绍

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

# rbac表分析
用户表:auth_user
角色表(部门,组表):auth_group
权限表:auth_permission
    
角色和权限是多对多---》中间表:auth_group_permissions
用户和角色是多对多---》中间表:auth_user_groups
而django的auth还多写了一个表,用户和权限的多对多:auth_user_user_permissions

"""
rbac权限控制一般都是用在公司内部的管理系统中(python的django框架就用于写公司内部项目较多)
Django的 Auth组件 采用的认证规则就是RBAC,
所以Django有个admin后台管理,配合auth,可以快速搭建出一个基于rbac的后台管理系统。

在几年前许多公司的后台管理就是用admin搭建的,但是admin页面简陋难看,所以又有很多第三方的美化框架,
例如Django 1.X很火的X-admin:前端基于JQ+bootstrap,但在Django2.X之后使用不佳,3.X直接不能用了,
于是乎又有一个叫做Simple UI的美化主题,
"""

2、Simple UI的使用(对admin美化)

Simple UI是Django admin的一个美化主题,是一个基于element-ui+vue开发。

Simple UI官方使用指南

# 下载
pip3 install django-simpleui

# 使用
INSTALLED_APPS = [
    'simpleui',
    'django.contrib.admin',
    'django.contrib.auth',
    ...
]

'''
这时候我们打开Django的admin后台,就能看到被Simple UI美化的界面了,除此之外我们可以自定义左侧的导航栏
'''
# 自定义左侧导航栏
import time

SIMPLEUI_CONFIG = {
    'system_keep': False,
    'menu_display': ['Simpleui', '权限认证', '多级菜单测试', '动态菜单测试'],  # 开启排序和过滤功能, 不填此字段为默认排序和全部显示, 空列表[] 为全部不显示.
    'dynamic': True,  # 设置是否开启动态菜单, 默认为False. 如果开启, 则会在每次用户登陆时动态展示菜单内容
    'menus': [
        {
            'name': 'Simpleui',
            'icon': 'fas fa-code',
            'url': '/home/'  # 可以放自己的地址(适用于前后端混合项目)
        },
        {
            'app': 'auth',
            'name': '权限认证',
            'icon': 'fas fa-user-shield',
            'models': [{
                'name': '用户',
                'icon': 'fa fa-user',
                'url': 'auth/user/'
            }]
        },
        {
            'name': '多级菜单测试',
            'icon': 'fa fa-file',
            # 二级菜单
            'models': [
                {
                    'name': 'Baidu',
                    'icon': 'far fa-surprise',
                    # 第三级菜单 ,
                    'models': [
                        {
                            'name': '爱奇艺',
                            'url': 'https://www.iqiyi.com/dianshiju/'
                            # 第四级就不支持了,element只支持了3级
                        }, {
                            'name': '百度问答',
                            'icon': 'far fa-surprise',
                            'url': 'https://zhidao.baidu.com/'
                        }
                    ]
                },
                {
                    'name': '内网穿透',
                    'url': 'https://www.wezoz.com',
                    'icon': 'fab fa-github'
                }]
        },
        {
            'name': '动态菜单测试',
            'icon': 'fa fa-desktop',
            'models': [{
                'name': time.time(),
                'url': 'http://baidu.com',
                'icon': 'far fa-surprise'
            }]
        }]
}

# 智慧大屏
https://gitee.com/kevin_chou/dataVIS
posted @ 2021-09-21 18:51  黑影Poco  阅读(160)  评论(0)    收藏  举报