权限控制(ACL、RBAC)、admin后台管理

一、ACL 访问控制列表

1、ACL(访问控制列表)的权限控制:(针对互联网用户的产品)

1
2
3
4
5
6
7
8
9
10
用户表
id    name      password
1     zhangsan   123
 
权限表
id   user_id    权限
1     1         评论权限
2     1          发抖音权限
 
张三:[评论权限, 发抖音权限]

二、基于角色的访问控制

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

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

1、django中的auth rbac应用

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

2、补充

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

1
2
3
4
5
6
7
8
9
10
11
12
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位置、天气等环境属性

三、django中权限控制

1、simpleui

django admin管理界面的美化: simpleui

1
2
3
4
5
6
7
8
9
10
# 公司内部,做公司内的项目需要使用这套权限控制
<br># 方案一:使用django-admin写
# 有的公司,不怎么写前端,直接使用django的admin,快速写出一套具有权限管理的系统
# django admin的界面不好看:第三方美化--》simpleui
 
## 方案二:自己写,前端使用vue,后端使用django,做公司内部的项目
    -第三方开源的权限控制 项目
        -python界:django-vue-admin  
        -java界:若依
        -go界:gin-vue-admin

2、安装

1
2
3
4
5
6
pip3 install django-simpleui
 
INSTALLED_APPS = [
  'simpleui'# 放到最上面
  ...
]

四、admin 后台管理model

1、注册

admin.site.register()

1
2
3
4
5
6
7
8
9
10
11
from django.contrib import admin
 
# Register your models here.
from .models import User, Book
from .models import AuthUser
from django.contrib.auth.models import Permission
 
admin.site.register(User)
admin.site.register(Book)
admin.site.register(AuthUser)
admin.site.register(Permission)

2、model

verbose_name_plural  字段能够修改表名显示

1
2
3
4
5
6
7
8
9
10
11
class User(models.Model):
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=32)
    email = models.EmailField(max_length=12, null=True)
    gender = models.IntegerField(choices=((1, '男'), (2, '女'), (0, '未知')), null=True)
 
    def __str__(self):
        return self.username
 
    class Meta:
        verbose_name_plural = '自定义用户表'

  

  

 

posted @   凡人半睁眼  阅读(230)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示