DRF ~ day11 之 基于角色的访问控制、django的权限演示、权限控制、simple-ui的使用、django-vue-admin演示

这篇具有很好参考价值的文章主要介绍了DRF ~ day11 之 基于角色的访问控制、django的权限演示、权限控制、simple-ui的使用、django-vue-admin演示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

DRF之之 基于角色的访问控制、django的权限演示、权限控制、simple-ui的使用、django-vue-admin演示



一、RBAC - 基于角色的访问控制

1.1、什么是RBAC

  • 概念

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

RBAC(Role-Based Access Control)基于角色的访问控制:(针对于公司内部项目)

  • 应用
# RBAC - Role-Based Access Control
# Django的 Auth组件 采用的认证规则就是RBAC

# 1)像专门做人员权限管理的系统(CRM系统)都是公司内部使用,所以数据量都在10w一下,一般效率要求也不是很高
# 2)用户量极大的常规项目,会分两种用户:前台用户(三大认证) 和 后台用户(BRAC来管理)
# 结论:没有特殊要求的Django项目可以直接采用Auth组件的权限六表,不需要自定义六个表,也不需要断开表关系,单可能需要自定义User表
  • 前后台权限控制

1)后台用户对各表操作,是后台项目完成的,我们可以直接借助admin后台项目(Django自带的)
2)后期也可以用xadmin框架来做后台用户权限管理
3)前台用户的权限管理如何处理:

定义了一堆数据接口的视图类,不同的登录用户是否能访问这些视图类,能就代表有权限,不能就代表无权限
前台用户权限用drf框架的 三大认证

  • django中的auth其实就实现了基于角色的访问控制—》通过表控制的

django+vue权限管理,Django-REST-framework框架,django,python

# 表分析
'''
# django的auth其实就实现了基于角色的访问控制---》通过表控制的
	-auth_user :用户表,存用户信息
    -auth_group:组,角色,存放角色信息
    -auth_permission:权限,存放权限信息
    # 分析:一个组(角色)中,有多个用户,一个用户,属于多种角色----》多对多
    -auth_user_groups:用户和组的多对多中间表
    # 分析:一个组,可能有多个权限,一个权限,也可能属于多个组---》多对多
    -auth_group_permissions:组和权限的多对多中间件
    # django,多了张表:auth_user_user_permissions
    # 分析:一个用户,可以有多个权限,一个权限,可以分配个多个用户---》多对多
    -auth_user_user_permissions:用户和权限多对多中间表
'''

1.2 、django中,如何做权限控制的

在django的后台管理里面,登录django的admin后台账号进行操作

createsuperuser 创建超级用户
django+vue权限管理,Django-REST-framework框架,django,python
启动django,浏览器登录django后台()
django+vue权限管理,Django-REST-framework框架,django,python
http://127.0.0.1:8000/admin/
django+vue权限管理,Django-REST-framework框架,django,python

用之前创建的管理员用户登录后
django+vue权限管理,Django-REST-framework框架,django,python
登录之后实现创建在模型层的表如何显示在后台
1、创建类表然后数据迁移之后去admin.py文件中导入就能实现
django+vue权限管理,Django-REST-framework框架,django,python
admin.py文件中导入表
django+vue权限管理,Django-REST-framework框架,django,pythondjango+vue权限管理,Django-REST-framework框架,django,python

权限操作,因为是超级用户创建的所以有全部权限
django+vue权限管理,Django-REST-framework框架,django,python

设置权限
django+vue权限管理,Django-REST-framework框架,django,python
django+vue权限管理,Django-REST-framework框架,django,python

创建用户实现不同权限操作
django+vue权限管理,Django-REST-framework框架,django,python
django+vue权限管理,Django-REST-framework框架,django,python

1.3、 我们开发中做权限控制

# python开发,公司内部项目多,使用基于角色的访问控制的权限,比较多

# python+django 开发出一套公司内部项目,要带rbac的权限控制
	-1 基于django的auth+admin 快速开发,有更多操作,但是没学
    -2 基于django的auth+admin+第三方美化 快速开发
    	-国内的:simple-ui,xadmin(弃用了)
        -国外的:
   	-3 基于django+vue+自定制权限 (现在主流)
    	-djagno-vue-admin :第三方开源
        
    -4 完全自己写

1.4、基于django的auth+admin+第三方美化 快速开发

1.4.1、 第三方美化 simp-ui 的使用

官方文档
https://simpleui.72wo.com/docs/simpleui/QUICK.html#%E7%9B%AE%E5%BD%95

  • 1、设置主题样式
# 1 安装
pip3 install django-simpleui
#强制更新到最新
pip3.9 install django-simpleui --upgrade

# 2 配置文件配置,注册app中
	INSTALLED_APPS = [
      'simpleui',
      ...
  ]

展示效果
django+vue权限管理,Django-REST-framework框架,django,python

# 2 菜单栏定制
# 3 自定义菜单和页面
# 4 自定义按钮
# 5 切换图标
# 6 首页显示的隐藏


# 其实它可以开发出任意各种功能

配置文件的代码


# 自定义菜单
import time

SIMPLEUI_CONFIG = {
    'system_keep': False,
    'menu_display': ['我的地盘', '权限认证', '多级菜单测试', '动态菜单测试', '图书管理'],  # 开启排序和过滤功能, 不填此字段为默认排序和全部显示, 空列表[] 为全部不显示.
    'dynamic': True,  # 设置是否开启动态菜单, 默认为False. 如果开启, 则会在每次用户登陆时动态展示菜单内容
    'menus': [
        {
            'name': '我的地盘',
            'icon': 'fas fa-code',
            'url': '/index/',
            # 浏览器新标签中打开
            # 'newTab': True,
        },
        {
            'app': 'auth',
            'name': '权限认证',
            'icon': 'fas fa-user-shield',
            'models': [{
                'name': '用户',
                'icon': 'fa fa-user',
                'url': 'auth/user/'
            }]
        },
        {
            # 自2021.02.01+ 支持多级菜单,models 为子菜单名
            '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'
            }]
        },
        {
            'app': 'app01',
            'name': '图书管理',
            'icon': 'fas fa-user-shield',
            'models': [
                {
                    'name': '书本管理',
                    'icon': 'fa fa-user',
                    'url': 'app01/book/'
                },
                {
                    'name': '出版社管理',
                    'icon': 'fa fa-user',
                    'url': 'app01/publish/'
                },
            ]
        },
    ]
}

SIMPLEUI_LOGIN_PARTICLES = False
SIMPLEUI_LOGO = 'https://avatars2.githubusercontent.com/u/13655483?s=60&v=4'
SIMPLEUI_HOME_INFO = False
SIMPLEUI_HOME_QUICK = False

admin文件的代码

from django.contrib import admin

from .models import Book, Publish

# admin.site.register(Book)
admin.site.register(Publish)


@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
    # 列表页面,展示的字段
    list_display = ('id', 'name', 'price')
    # 增加自定义按钮
    actions = ['custom_button']

    def custom_button(self, request, queryset):
        print(queryset)
        print(request)

    # 显示的文本,与django admin一致
    custom_button.short_description = '测试按钮'
    # icon,参考element-ui icon与https://fontawesome.com
    custom_button.icon = 'fas fa-audio-description'

    # 指定element-ui的按钮类型,参考https://element.eleme.cn/#/zh-CN/component/button
    custom_button.type = 'info'
    # 给按钮追加自定义的颜色
    # custom_button.style = 'color:black;'

模型层表

from django.contrib import admin

from .models import Book, Publish

# admin.site.register(Book)
admin.site.register(Publish)


@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
    # 列表页面,展示的字段
    list_display = ('id', 'name', 'price')
    # 增加自定义按钮
    actions = ['custom_button']

    def custom_button(self, request, queryset):
        print(queryset)
        print(request)

    # 显示的文本,与django admin一致
    custom_button.short_description = '测试按钮'
    # icon,参考element-ui icon与https://fontawesome.com
    custom_button.icon = 'fas fa-audio-description'

    # 指定element-ui的按钮类型,参考https://element.eleme.cn/#/zh-CN/component/button
    custom_button.type = 'info'
    # 给按钮追加自定义的颜色
    # custom_button.style = 'color:black;'

展示效果
django+vue权限管理,Django-REST-framework框架,django,python
首页展示
django+vue权限管理,Django-REST-framework框架,django,python
功能展示
django+vue权限管理,Django-REST-framework框架,django,python

1.5 djagno-vue-admin演示

看文档 https://gitee.com/liqianglog/django-vue-admin


总结

以上就是今天要讲的内容,本文仅仅简单介绍了 基于角色的访问控制、django的权限演示、权限控制、simple-ui的使用、django-vue-admin演示 。文章来源地址https://www.toymoban.com/news/detail-804668.html

到了这里,关于DRF ~ day11 之 基于角色的访问控制、django的权限演示、权限控制、simple-ui的使用、django-vue-admin演示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【burpsuite安全练兵场-服务端7】访问控制漏洞和权限提升-11个实验(全)

       博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章)。 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edusrc高白帽,vulfocus、攻防世界等平台排名100+、高校漏洞证书、cnvd原创漏洞证书等。 擅长:

    2024年02月02日
    浏览(31)
  • Django-drf项目初始化:跨域、认证权限过滤、static静态资源路由,mysql数据库连接,登录注册功能

    码云地址:https://gitee.com/liuhaizhang/drf-project-initialization 项目目录结构: study_drf            -home         -static         -study_drf         -util         -manage.py pip install django #drf基于django pip install djangorestframework #drf框架 pip install mysqlclient #连接数据库 pip install djangorestframewo

    2024年02月03日
    浏览(54)
  • 若依框架---权限控制角色设计

    👏作者简介:大家好,我是小童,Java开发工程师,CSDN博客博主,Java领域新星创作者 📕系列专栏:前端、Java、Java中间件大全、微信小程序、微信支付、若依框架、Spring全家桶 📧如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀 🔥如果感觉博主的文章

    2024年01月19日
    浏览(30)
  • MSSQL内置数据库角色及访问权限设置

    MSSQL数据库内置数据库角色 在MSSQL数据库中,有一些内置的数据库角色,这些角色具有特定的权限和功能。以下是常见的内置角色: sysadmin :sysadmin是服务器级别的角色,拥有最高权限。sysadmin可以执行服务器上的任何操作,包括创建、修改和删除数据库、登录和安全设置等。

    2024年02月13日
    浏览(36)
  • vue3-实战-11-管理后台-权限管理之角色管理模块

    目录 1-角色列表 1.1-原型需求分析 1.2-接口封装和数据类型定义 1.3-请求服务器端获取列表页面数据 1.4-组件页面动态渲染数据 2-角色新增和编辑 2.1-需求原型分析 2.2-页面结构以及功能实现 3-角色的删除 4-分配权限 4.1-原型需求分析 4.2-获取服务器数据渲染数据 4.3-分配权限  

    2024年02月09日
    浏览(29)
  • SpringSecurity实现角色权限控制(SpringBoot+SpringSecurity+JWT)

    通过 springboot整合jwt和security ,以用户名/密码的方式进行认证和授权。认证通过jwt+数据库的,授权这里使用了两种方式,分别是 SpringSecurity自带的hasRole方法+SecurityConfig 和 我们自定义的 permission+@PreAuthorize注解。 SpringSecurity中的几个重要组件: 1.SecurityContextHolder(class) 用来

    2024年02月05日
    浏览(33)
  • 后端进阶之路——浅谈Spring Security用户、角色、权限和访问规则(三)

    「作者主页」 :雪碧有白泡泡 「个人网站」 :雪碧的个人网站 chatgpt体验地址 继上篇后端进阶之路——深入理解Spring Security配置(二) 在内存中定义用户是一种简单的方法,适用于开发和测试环境。我们可以在Spring Security的配置类中使用 InMemoryUserDetailsManager 来定义用户。

    2024年02月14日
    浏览(24)
  • 面对根据角色和单子状态如何有效的进行按钮权限的控制

    当阁下看到这个按钮权限控制时,该如何应对 问题1: 举个🌰,对于【待分配】这个工单状态的申请撤回按钮进行解析 问题2:举2个🌰对于【科室待接受】这个节点的申请撤回按钮进行解析 问题3:有些按钮 在多个节点要显示,比如【申请撤回、追加信息、催办】,像这种

    2024年01月19日
    浏览(31)
  • 43--Django-项目实战-全栈开发-基于django+drf+vue+elementUI企业级项目开发流程-课程详情页面、搜索页面以及后台设计

    1.视频播放功能 下载第三方插件:vue-video-player 使用步骤: 第一步: cnpm install vue-video-player 第二步:在main.js中引入

    2024年02月09日
    浏览(37)
  • 第22关 深入解析K8s中的RBAC角色访问控制策略

    ------ 课程视频同步分享在今日头条和B站 大家好,我是博哥爱运维,在k8s上我们如何控制访问权限呢,答案就是 Role-based access control ( RBAC ) - 基于角色(Role)的访问控制,(RBAC)是一种基于组织中用户的角色来调节控制对 计算机或网络资源的访问的方法。 在早期的K8s版本,

    2024年02月04日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包