首页 > 其他分享 >【十二】DRF之RBAC控制

【十二】DRF之RBAC控制

时间:2023-07-31 12:22:04浏览次数:44  
标签:__ models 十二 用户 RBAC admin 权限 DRF

【一】什么是RBAC

【1】概念

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

【2】应用

  • RBAC - Role-Based Access Control

  • Django的 Auth组件 采用的认证规则就是RBAC

  • 1)像专门做人员权限管理的系统(CRM系统)都是公司内部使用

    • 所以数据量都在10w一下,一般效率要求也不是很高
  • 2)用户量极大的常规项目,会分两种用户:

    • 前台用户(三大认证) 和 后台用户(BRAC来管理)
  • 结论:

    • 没有特殊要求的Django项目可以直接采用Auth组件的权限六表
    • 不需要自定义六个表,也不需要断开表关系,单可能需要自定义User表

【3】前后台权限控制

  • 1)后台用户对各表操作,是后台项目完成的
    • 我们可以直接借助admin后台项目(Django自带的)
  • 2)后期也可以用xadmin框架来做后台用户权限管理
  • 3)前台用户的权限管理如何处理
  • 定义了一堆数据接口的视图类
    • 不同的登录用户是否能访问这些视图类,能就代表有权限,不能就代表无权限
  • 前台用户权限用drf框架的
    • 三大认证

【二】Django的内置RBAC(六表)

【1】权限三表

【2】权限六表

【三】实操

【1】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

【2】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后台进行操作了

标签:__,models,十二,用户,RBAC,admin,权限,DRF
From: https://www.cnblogs.com/dream-ze/p/17593130.html

相关文章

  • 周报_第十二周
    学习时间:2023.7.24-2023.7.30一、完成内容1.复习《动手学深度学习Pytorch版》第六章。2.进行了部分界面的前后端交互。二、下周计划1.复习《动手学深度学习Pytorch版》。2.前后端交互以及相关调试。......
  • React(十二):props的函数组件中使用
    <!DOCTYPEhtml><html><head><metacharset="utf-8"><title>props的函数组件实现</title><scriptsrc="https://unpkg.com/react@18/umd/react.development.js"></script><scriptsr......
  • Cache(十二)Cache(十三)
    父子表介绍及创建举例:  创建操作步骤(不用填sqlrowid表达式,根据父表自动生成)   父子表的新增、查询、事务 cache130.14.19......
  • 【分布式技术专题】「架构设计方案」盘点和总结RBAC服务体系的功能设计及注意事项技术
    前言介绍权限管理是后台系统的重要组成部分,主要目的是控制不同人对资源的访问权限,以避免操作错误和隐私数据泄露等风险问题。我在公司负责权限管理,对该领域的设计很熟悉。公司采用微服务架构,因此权限系统独立于其他业务系统,包括商品中心、订单中心、用户中心、仓库系统、小程序和多......
  • # 实验十二
    实验十二编写0号中断的处理程序,使得在除法溢出发生时,在屏幕中间显示字符串"divideerror!"中断处理程序assumecs:codecodesegmentstart:movax,csmovds,axmovsi,offsetdo0;设置源地址movax,0moves,axmovdi,200h;设置目的地址movcx,offsetdo0end-offsetdo......
  • 第十二章:低风险发布
    高频发布是一种趋势收益与成本共存高频发布的收益:有更多的机会与真实用户互动,从而快速决定或调整自己产品前进的方向由于每次变更规模较小,软件系统没有剧烈的变化,从而降低部署风险单次部署成本降低,且趋于稳定......
  • PlayWright(二十二)- allure插件(一)
    在上文中,我们介绍并使用了pytest-html插件,总之并不复杂,但是今天我们要讲一个比pytest-html插件强很多的插件allure报告,我们要掌握他并且灵活使用,之后的框架就不需要考虑其他的了 1.使用allure需要什么?因为allure的环境基于Java环境,所以得先下载JDK 下载JDK,配置环境变量因......
  • 前端Vue仿支付宝自定义可滑动轮播分页宫格菜单组件,可支持九宫格 十二宫格 十五宫格
    背景介绍随着技术的不断发展,传统的开发方式使得系统的复杂度越来越高。在传统开发过程中,一个小小的改动或者一个小功能的增加可能会导致整体逻辑的修改,造成牵一发而动全身的情况。为了解决这个问题,我们采用了组件化的开发模式。通过组件化开发,可以有效地实现单独开发,单独维护,而且......
  • Jmeter(二十二)jmeter命令行的执行方式以及常用参数
    jmeter命令-n-t:-n  表示使用非GUI的方式运行;-t  表示指定jmeter的测试脚本; -l :-l  表示生成指定的报告文件,一般使用jtl格式来保存,因为jtl文件可以使用jmeter任意监听器打开;jmeter.save.saveservice.output_format=xmljmeter.save.saveservice.response_da......
  • 【js学习笔记五十二】weakmap的应用
     目录前言导语 代码部分前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语WeakuMap编辑 代码......