[Django REST framework - RBAC-基于角色的访问控制、base64编码 、xadmin的使用]

RBAC-基于角色的访问控制

RBAC 是基于角色的访问控制(Role-Based Access Control )

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

应用

RBAC - Role-Based Access Control
Django的 Auth组件 采用的认证规则就是RBAC
  • 1)像专门做人员权限管理的系统(CRM系统)都是公司内部使用,所以数据量都在10w一下,一般效率要求也不是很高
  • 2)用户量极大的常规项目,会分两种用户:前台用户(三大认证) 和 后台用户(BRAC来管理)

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

前后台权限控制

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

Django的内置RBAC(六表)

1 权限3个表
- 用户表:auth_user
- 角色表:auth_group
- 权限表:auth_permission 2 权限6个表(正常是5个表),django的auth,用的就是6表
- 用户表:auth_user
- 角色表:auth_group
- 权限表:auth_permission
- 角色和权限是多对多:auth_group_permissions (G_P关系表)
- 用户和角色是多对多:auth_user_groups (U_G关系表) - 用户和权限的多对多表:auth_user_user_permissions (U_P关系表)

权限六表:RBAC - Role-Based Access Control

三表

权限六表

总结

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

做项目是否要分表管理前后台用户

"""
1)是否需要分表
答案:不需要
理由:前后台用户共存的项目,后台用户量都是很少;做人员管理的项目,基本上都是后台用户;前后台用户量都大的会分两个项目处理 2)用户权限六表是否需要断关联
答案:不需要
理由:前台用户占主导的项目,几乎需求只会和User一个表有关;后台用户占主导的项目,用户量不会太大 3)Django项目有没有必须自定义RBAC六表
答案:不需要
理由:auth组件功能十分强大且健全(验证密码,创建用户等各种功能);admin、xadmin、jwt、drf-jwt组件都是依赖auth组件的(自定义RBAC六表,插件都需要自定义,成本极高)
"""

base64编码

# base64编码
### 编码
import base64
import json dic={'name':'lqz','id':1}
user_info_str=json.dumps(dic) # 序列化为str类型 # res=base64.b64encode(bytes(user_info_str,encoding='utf-8'))
↑ ↓ 相等
res=base64.b64encode(user_info_str.encode('utf-8'))
print(res) # eyJuYW1lIjogImxxeiIsICJpZCI6IDF9 ### 解码
res=base64.b64decode('TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ='.encode('utf-8'))
print(res) ### 注意:base64长度是4的倍数,如果不足,需要用 = 补齐

xadmin的使用

1 django后台管理admin
2 xadmin,美化页面,bootstrap+jq,
-django:1.x,2.x
-3.x以后就不用了 3 simple-ui
3.x用 4 django是1.x
pip3 install xadmin 5 django是2.x
pip install git+git://github.com/sshwsfc/xadmin.git@django2 6 碰到一个第三方插件,有些bug
-pip3 install 名字:装到解释器中---》下次换了别的解释器,改了源码,又得重新改
-把第三方插件的源码拿出来
-放到自己项目里,想怎么改,就怎么改 7 Xadmin和django的xadmin压根没有联系
-http://x.xuebingsi.com/
-纯前端(html,css,js)后台模板
-跟语言无关
-xadmin和layui的区别
基于layui写的后台管理模板 8 基于bootstrap的后台管理模板
-admin lte 9 前后端分离
-后台模板
-vue-admin

[Django REST framework - RBAC-基于角色的访问控制、base64编码 、xadmin的使用]的更多相关文章

  1. YII RBAC基于角色的访问控制

    基于角色的访问控制( Role-Based Access Control ),是一种简单的而又强大的集中访问控制.基于Yii Framework 的 authManager 组件实现了分等级的 RBA ...

  2. RBAC基于角色的访问控制

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用 ...

  3. RBAC 基于角色的访问控制

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...

  4. RBAC: 基于角色的访问控制(Role-Based Access Control)

    本文只讨论两种基于角色的访问控制的不同点,不涉及权限设计的数据库设计. 基于角色的访问控制(Role-Based Access Control)可分为隐式角色访问控制和显式角色访问控制. 隐式角色访问 ...

  5. RBAC(基于角色的访问控制权限)表结构

    Rbac 支持两种类,PhpManager(基于文件的) 和 DbManager(基于数据库的) 权限:就是指用户是否可以执行哪些操作 角色:就是上面说的一组操作的集合,角色还可以继承 在Yii2.0 ...

  6. Yii中 RBAC(基于角色的访问控制权限)表结构原理分析

    这里有几个概念很重要,我简单用大白话说一下; 权限:就是指用户是否可以执行哪些操作. 如:小张可以发帖.回帖.浏览,小红只能回帖.浏览 角色:就是上面说的一组操作的集合. 如:高级会员有发帖.回帖.删 ...

  7. RBAC(Role-Based Access Control,基于角色的访问控制)

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...

  8. RBAC(Role-Based Access Control)基于角色的访问控制

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用 ...

  9. Azure ARM (16) 基于角色的访问控制 (Role Based Access Control, RBAC) - 使用默认的Role

    <Windows Azure Platform 系列文章目录> 今天上午刚刚和客户沟通过,趁热打铁写一篇Blog. 熟悉Microsoft Azure平台的读者都知道,在老的Classic ...

随机推荐

  1. Sqli-labs-master通关解析(持续更新中。。。)

    大多情况下:SQL注入其实就是构造正确的mysql命令,让网页回显本不应该让我们看到的数据(如用户的账号和密码). 第一关-联合查询注入 查库 // 查看当前页面在的数据库 ?id=-1' union ...

  2. linux进阶之子网划分

    一.定义 当我们对一个网络进行子网划分时,基本上就是将它分成小的网络.比如,当一组IP地址指定给一个公司时,公司可能将该网络"分割成"小的网络,每个部门一个.这样,技术部门和管理部 ...

  3. pip;python包管理工具

    刚开始学习Python时,在看文档和别人的blog介绍安装包有的用easy_install, setuptools, 有的使用pip,distribute,那麽这几个工具有什么关系呢,看一下下面这个图 ...

  4. 七牛云-上传、删除文件,工具类(Day49)

    要求: 1. java1.8以上 2. Maven: 这里的version指定了一个版本范围,每次更新pom.xml的时候会尝试去下载7.5.x版本中的最新版本,你可以手动指定一个固定的版本. < ...

  5. Java求余%引发的一连串故事

    C1 RCE对%的处理 HotSpot VM的C1有个RCE(Range Check Elimination,范围检查消除)优化,所谓范围检查消除,就是为了正确的抛出数组越界异常,虚拟机需要在数组访问 ...

  6. C语言编程 菜鸟练习100题(01-10)

    [练习1]输出 "Hello, World!" 0. 题目: 输出 "Hello, World!" 1. 分析: 使用 printf() 输出 "He ...

  7. IDEA 通过ctrl+滚轮缩放字体大小

    能用图解决的问题,尽量简单粗暴通俗易懂 1.第一种方式 2.第二种方式

  8. Windows家庭版打开或关闭Hyper-V

    打开hyper-v 创建open_hyper-v.bat文件 pushd "%~dp0" dir /b %SystemRoot%\servicing\Packages\*Hyper ...

  9. Cuda Stream流分析

    Cuda Stream流分析 Stream 一般来说,cuda c并行性表现在下面两个层面上: Kernel level Grid level Stream和event简介 Cuda stream是指 ...

  10. deepstream-开放式实时服务器

    deepstream-开放式实时服务器 deepstream是一款开源服务器,其灵感来自金融交易技术背后的概念.它允许客户端和后端服务同步数据.发送消息并以非常高的速度和规模规划rpc. 参考:htt ...