IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 六十二、RBAC、simpleui介绍 -> 正文阅读

[Python知识库]六十二、RBAC、simpleui介绍

一 RBAC的介绍和使用

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

在RBAC中,权限与角色相关联,用户通过与角色绑定,就拥有了相应的权限。

这就极大地简化了权限的管理。这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便。

RBAC权限管理的模式,适用于公司内部管理系统,不适用于互联网用户系统。

例如:

用户数据:用户表user
角色表:role表
权限:permission表

# user
id      name      password
1       张三         xxx
2		李四         yyy
3       王二         zzz



# role
id         role_name
1          超级管理员
2            管理员
3           普通用户


# permission
id          per_name
1		     新增用户
2			 修改密码
3			 修改头像
4            锁定账户


# 这三个表之间的关系是:

	权限表是权限的一条条记录,与角色表之间是多对多关系,一条权限记录可以有多个角色记录,一条角色记录也可以有多个权限记录,所以需要创建关系表。

	角色表和用户表之间也是多对多关系,所以也需要创建关系表。


# 角色和权限的第三张关系表
# role_permission
id        role_id      permission_id
1            1                    1
2            1                    2
3            1                    3
4            1                    4 
5            2                    1
6            2                    2
7            2                    3
8            3                    2
9            3                    3

# 用户和角色的第三张关系表
# user_role
id        user_id         permission_id
1             1                 1
2             2                 2
3             3                 3


这样就有了五张表,不同的用户有不同的角色,根据角色来赋予权限。

在django的后台管理admin就提供了RBAC模式,通过authentic模块实现的,比普通的RBAC高级一点,因为多了一个用户和权限关系的表。

auth_user  # 用户表
auth_group  # 角色表(部门,组)
auth_permission  # 权限表
auth_group_permissions  # 角色和权限的关系表
auth_user_groups  # 用户和角色的关系表
auth_user_user_permissions  # 用户和权限的关系表

django-admin权限控制使用

  1. models.py中创建表模型

    class Book(models.Model):
    title = models.CharField(max_length=32, verbose_name='书名')
    price = models.IntegerField(verbose_name='书价')
    publish = models.ForeignKey(to='Publish', on_delete=models.SET_NULL, null=True, verbose_name='出版社外键')
    
    def __str__(self):
        return self.title
    
    class Meta:
        verbose_name_plural = '图书表'
    
    
    class Publish(models.Model):
        name = models.CharField(max_length=32, verbose_name='出版社表')
        addr = models.CharField(max_length=32, verbose_name='出版社地址')
    
        def __str__(self):
            return self.name
    
        class Meta:
            verbose_name_plural = '出版社表'
    
  2. 在admin.py中注册模型表

    from .models import *
    
    admin.site.register(Book)
    admin.site.register(Publish)
    
  3. 迁移数据库,并创建超级用户。
    迁移完后会产生关于auth的六张表。
    在这里插入图片描述

  4. 用超级管理员登录admin后台。
    超级管理员拥有所有权限,创建用户、图书的增删改查、出版社的增删改查等等。
    在这里插入图片描述

  5. 普通用户登录

    只有超级管理员赋予的权限。
    在这里插入图片描述

二 ACL、RBAC、ABAC(PBAC,CBAC)权限控制的介绍

2.1 ACL(Access Control List,访问控制列表)

将用户或组等使用者直接与对象的权限对接。

用户表,权限表,中间 给用户授予某些权限即可

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

将用户与角色对接,然后角色与对象的权限对接

2.3 ABAC(Attribute-Based Access Control,基于属性的访问控制)

ABAC(Attribute-Based Access Control,基于属性的访问控制)

又称为PBAC(Policy-Based Access Control,基于策略的访问控制)

CBAC(Claims-Based Access Control,基于声明的访问控制)

传统的ACL、RBAC的架构是
{subject,action,object},
而ABAC的架构是
{subject,action,object,contextual}且为他们添加了parameter(参数)。

subject属性:比如用户的年龄、部门、角色、威望、积分等主题属性。

action属性:比如查看、读取、编辑、删除等行为属性。

object属性:比如银行账户、文章、评论等对象或资源属性。

contextual属性:比如时段、IP位置、天气等环境属性。

三 casbin使用

一个支持如ACL, RBAC, ABAC等访问模型。

四 后台管理simplui的介绍和使用

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:11:19  更:2022-10-22 21:12:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/26 1:44:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计