六十二、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的介绍和使用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值