做网站选云服务器内核大连建设网站制作

news/2025/10/2 8:48:52/文章来源:
做网站选云服务器内核,大连建设网站制作,js做网站,友情链接有用吗1、权限组件rbac 1、什么是权限 1 项目与应用 2 什么是权限#xff1f; 一个包含正则表达式url就是一个权限 who what how ----------True or Flase 2、版本1#xff1a;用户表与权限url表 对应关系 # 版本1UserInforname pwdpermissionmodels.manytomany(Permissi…1、权限组件rbac 1、什么是权限 1 项目与应用 2 什么是权限 一个包含正则表达式url就是一个权限 who what how ----------True or Flase   2、版本1用户表与权限url表 对应关系 # 版本1UserInforname pwdpermissionmodels.manytomany(Permission)name pwd egon 123 alex 456 A 111B 222C 333D 444Permissionurl.....title....id url title1 /users/ 查看用户2 /users/add/ 添加用户3 /customer/add 添加客户UserInfor_permissioniduser_idpermission_id id user_id permission_id1 1 1 2 1 23 2 24 3 15 3 26 3 34 4 15 4 26 4 34 5 15 5 26 5 34 6 15 6 26 6 34 7 15 7 26 7 3     示例登录人egon访问url:http://127.0.0.1:8000/users/ def users(request):user_idrequest.session.get(user_id)objUserInfor.objects.filter(pkuser_id).first()obj.permission.all().valuelist(url)return HttpResponse(users.....)   3、版本2 用户--》角色--》权限 UserInforname pwdrolesname pwd egon 123 alex 456 alex 456 alex 456 alex 456 alex 456 alex 456 alex 456 alex 456 Roletitle....... permissions......id title1 销售员UserInfor2Roleid user_id role_id 1 1 1Permissionurl.....title....id url title1 /users/ 查看用户2 /users/add/ 添加用户3 /customer/add 添加客户Role2Permissionid role_id permission_id 1 1 12 1 23 1 33 rbacrole-based access control   2、代码实现 1项目目录结构 2数据库表 from django.db import models# Create your models here.class User(models.Model):name models.CharField(max_length32)pwd models.CharField(max_length32)roles models.ManyToManyField(toRole)def __str__(self):return self.nameclass Role(models.Model):title models.CharField(max_length32)permissions models.ManyToManyField(toPermission)def __str__(self):return self.titleclass Permission(models.Model):title models.CharField(max_length32)url models.CharField(max_length32)def __str__(self):return self.title    3admin添加数据 创建超级用户 alex    注册数据表   from django.contrib import admin# Register your models here.from .models import *admin.site.register(User) admin.site.register(Role) admin.site.register(Permission)      3、登录验证 1、session中注册用户权限 1.在session中注册用户ID request.session[user_id] user.pk2.初始化 permission_list 并注册到session 中 initial_session(user,request) 注意点 permission user.roles.all().values(permission__url).distinct() 1.values: temp [] for role in user.roles.all(): # QuerySet[ Role: 保洁 , Role: 销售 ] temp.append({ title:role.title permission__url: role.permission__url.all() }) return temp2.values 不会去重 QuerySet [{title: 保洁, permission__url: /users/}, {title: 销售, permission__url: /users/}, {title: 销售, permission__url: /users/add}] 2、解耦     def initial_session(request,user):permissions user.roles.all().values(permissions__url).distinct()permission_list []for item in permissions:permission_list.append(item[permissions__url])print(permission_list) # [/users/, /users/add, /users/delete/(\\d), /users/edit/(\\d)] request.session[permission_list] permission_listvalues :for role in user.roles.all(): # QuerySet [Role: 保洁, Role: 销售]temp.append({title:role.title,permissions_url:role.permissions.all()})# QuerySet [{title: 保洁, permissions__url: /users/},# {title: 销售, permissions__url: /users/},# {title: 销售, permissions__url: /users/add}]         4、基于中间件的权限校验 1、middleware如何构造抄袭         2、正则匹配 from django.test import TestCase# Create your tests here.# 当前path 如何与 paths匹配 # 不能用in /users/delete/9 # 正则匹配 li [/users/, /users/add, /users/delete/(\\d), /users/edit/(\\d)]c_path /users/delete/9import reflag Falsefor permission in li:permission ^%s$ % permissionret re.match(permission, c_path)if ret:flag Truebreakif flag:print(success)# ret re.match(/users/, /users/delete/9) ret re.match(^/users/$, /users/delete/9) print(ret)     3、admin如何验证302重定向      3、构建中间件   # -*- coding: utf-8 -*- # Time : 2018/08/11 0011 9:04 # Author : Venicidimport refrom django.utils.deprecation import MiddlewareMixin from django.shortcuts import HttpResponse, redirectclass ValidPermission(MiddlewareMixin):def process_request(self, request):# 当前访问路径current_path request.path_info# 1、检验是否属于白名单 白名单不需要任何权限的url# 正则匹配valid_url_list [/login/,/reg/,/admin/.*]for valid_url in valid_url_list:ret re.match(valid_url, current_path)if ret:return None# 2、校验是否登录user_id request.session.get(user_id)if not user_id:return redirect(/login/)# 3、校验权限permission_list request.session.get(permission_list,[])flag Falsefor permission in permission_list:permission ^%s$ % permissionret re.match(permission, current_path)if ret:flag Truebreakif not flag:return HttpResponse(没有访问权限)return None    4、views视图url   url from django.contrib import admin from django.urls import path,re_pathfrom app01 import viewsurlpatterns [path(admin/, admin.site.urls),re_path(r^users/$,views.users),re_path(r^users/add/$,views.add_user),re_path(r^roles/$,views.roles),re_path(r^login/$,views.login), ]   views from django.shortcuts import render, HttpResponse# Create your views here.from rbac.models import *def users(request):user_list User.objects.all()return render(request, users.html, locals())def add_user(request):permission_list request.session[permission_list] # # [/users/, /users/add, /users/delete/(\\d), /users/edit/(\\d)]current_path request.path_infoflag Falsefor permission in permission_list:permission ^%s$%permissionret re.match(permission, current_path)if ret:flag Truebreakif not flag:return HttpResponse(没有访问权限)return HttpResponse(add user)def roles(request):role_list Role.objects.all()print(role_list)# 方式2 middleware# 方式1permission_list request.session[permission_list] # # [/users/, /users/add, /users/delete/(\\d), /users/edit/(\\d)]current_path request.path_infoflag Falsefor permission in permission_list:permission ^%s$%permissionret re.match(permission, current_path)if ret:flag Truebreakif not flag:return HttpResponse(没有访问权限)return render(request, roles.html, locals())from rbac.service.perssions import * def login(request):if request.method POST:user request.POST.get(user)pwd request.POST.get(pwd)user User.objects.filter(nameuser, pwdpwd).first()if user:############## 在session中注册用户request.session[user_id] user.pk############# 在session中注册权限list# 查询当前登录用户的所有角色# ret user.roles.all()# print(ret) # QuerySet [Role: 保洁, Role: 销售]# 查询当前登录用户的所有权限 initial_session(request, user)return HttpResponse(登录成功)return render(request, login.html, locals())      5、注意点 注意点 1.白名单不需要任何权限的url valid_url_list [/login/, /reg/, /admin/.*] for valid_url in valid_url_list: ret re.match(valid_url, current_path) if ret: return 正则匹配2.校验是否登录 user_id request.session.get(user_id) if not user_id: return redirect(/login/)3.校验权限^ $ / 正则 permission_list request.session.get(permission_list,[]) flag False for permission in permission_list: # [/users/, /users/add/, /users/edit/(\\d)/, /users/delete/(\\d)/] # 需要 ^ $ 限定 permission ^%s$ % permission # 正则 ret re.match(permission, current_path) if ret: flag True break if not flag: return HttpResponse(无访问权限) 4、总结关于rbac 关于rbac (1) 创建表关系class User(models.Model):namemodels.CharField(max_length32)pwdmodels.CharField(max_length32)rolesmodels.ManyToManyField(toRole)def __str__(self): return self.nameclass Role(models.Model):titlemodels.CharField(max_length32)permissionsmodels.ManyToManyField(toPermission)def __str__(self): return self.titleclass Permission(models.Model):titlemodels.CharField(max_length32)urlmodels.CharField(max_length32)def __str__(self):return self.title(2) 基于admin录入数据(3) 登录校验if 登录成功:查询当前登录用户的权限列表注册到session中(4) 校验权限中间件的应用class ValidPermission(MiddlewareMixin):def process_request(self,request):# 当前访问路径current_path request.path_info# 检查是否属于白名单valid_url_list[/login/,/reg/,/admin/.*]for valid_url in valid_url_list:retre.match(valid_url,current_path)if ret:return None# 校验是否登录 user_idrequest.session.get(user_id)if not user_id:return redirect(/login/)# 校验权限permission_list request.session.get(permission_list,[]) # [/users/, /users/add, /users/delete/(\\d), users/edit/(\\d)] flag Falsefor permission in permission_list:permission ^%s$ % permissionret re.match(permission, current_path)if ret:flag Truebreakif not flag:return HttpResponse(没有访问权限)return None      转载于:https://www.cnblogs.com/venicid/p/9458776.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/924714.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工会网站建设请示可以做锚文本链接的网站

E201_06_02_正弦函数题目要求:按照三角函数泰勒级数展开式计算正弦函数值:,直到最后一项的绝对值小于106解题思路:1. 输入弧度2. 确定初始化值3. 求阶梯函数代码:public class E201_06_02_正弦函数 {public static void main(Stri…

Flutter完整开发指南 | FlutterDart – The Complete Guide - 教程

Flutter完整开发指南 | Flutter&Dart – The Complete Guide - 教程2025-10-02 08:40 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: au…

Flutter实现闲鱼底部导航栏中间突出效果

Flutter实现闲鱼底部导航栏中间突出效果Posted on 2025-10-02 08:41 lifeisastory 阅读(0) 评论(0) 收藏 举报实现思路 在 Scaffold 组件中使用 bottomNavigationBar 和 floatingActionButton 属性建立底部导航栏…

2025试验机实力厂家品牌公司最新权威推荐榜:精准测试与技术创新标杆之选

在制造业转型升级与质量强国战略深入推进的背景下,试验机作为质量检测与材料研发的核心装备,正迎来前所未有的发展机遇。根据行业数据显示,2024年我国试验机市场规模已突破百亿元,年均复合增长率保持在12%以上,其…

AI元人文:价值共生体系统——构建人机文明的演进基石——DeeoSeek融合

AI元人文:价值共生体系统——构建人机文明的演进基石 摘要 本文针对传统AI"价值对齐"范式的局限性,提出"价值共生体系统"作为下一代智能系统的核心架构。该系统通过价值语义网络、共识决策引擎和…

详细介绍:大模型架构之GPT、LLaMA与PaLM模型

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025喷涂厂家TOP企业品牌推荐排行榜,喷涂、喷涂设备、 喷涂生产线、喷涂流水线推荐这十家公司!

在涂装行业快速发展的当下,企业对喷涂设备的需求日益提升,但诸多痛点却制约着行业升级。粉末回收效率低导致的原料浪费、换色耗时久引发的生产停滞、温度控制不准造成的涂层质量不稳定等问题,让不少企业陷入成本高企…

微科技h5制作网站模板下载网站开发的形式有

类型推导: 当使用 auto 关键字声明变量时,编译器会根据变量初始化的表达式推导出其类型。编译器会分析初始化表达式,并根据表达式的类型来确定变量的类型。 类型保留: 编译器在编译时将 auto 关键字替换为实际的类型,…

完整教程:【JAVA】【BUG】经常出现的典型 bug 及解决办法

完整教程:【JAVA】【BUG】经常出现的典型 bug 及解决办法pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consola…

python人网站开发案例服务商平台支付宝

来源:亿欧根据全球领先的信息技术研究与顾问公司Gartner的预测,人工智能(AI)产生的全球商业价值预计将在2018年达到1.2万亿美元,比2017年增长70%。此外,Gartner预计到2022年,人工智能衍生的商业…

网站建设更新维护工作企业网站制作的公司

Redis是什么,优缺点? Redis本质是一个K-V类型的内存数据库 纯内存操作,每秒可处理超过10w的读写操作 优点: 读写性能极高 非阻塞IO 单线程 支持持久化 支持事务 数据结构丰富 缺点: 容易受到物理内存的限制 主机宕机可…

读人形机器人28智慧城市2

读人形机器人28智慧城市1. 智慧城市 1.1. 智慧城市的概念已成为创新与可持续发展的灯塔 1.2. 在智慧城市景观中发挥核心作用的是由AI驱动的人形机器人,它们无缝融入人们的日常生活 1.3. 是城市生态系统中的积极参与者…

浅析 AC 自动机

哈喽大家好,我是 doooge,今天来点大家想看的东西啊。 \[\Huge \sf 浅析~AC~自动机 \] 前置知识:Trie,不需要 KMP。1. AC 自动机的构造与匹配 所谓 AC 自动机,是结合了 Trie 和 KMP 思想的自动机,简单来说就是一个…

实用指南:谷歌官方 Chrome DevTools MCP 正式发布

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025百度官网认证作用代理商推荐,北京益百科技通过官网认证,助力企业优化搜索排名,提升用户体验,降低营销成本

在当今数字化时代,互联网已成为企业宣传推广的主阵地。北京益百科技有限公司作为一家致力于为企业提供互联网解决方案的专业公司,自2014年与百度携手合作,成为北京地区百度信誉“首批独家”授权服务商以来,凭借其丰…

实用指南:Linux(操作系统)文件系统--对打开文件的管理

实用指南:Linux(操作系统)文件系统--对打开文件的管理pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas…

南昌建设局网站查询塔吊证怎么查网络优化工程师的工作内容

下载安装 下载地址: https://download.csdn.net/download/yijianxiangde100/88496463 安装apk 即可。 证书配置:

dede鲜花网站模板下载境外公司注册代理机构

前言 第11章对应的内容选择题和案例分析都会进行考查,这一章节属于10大管理的内容,学习要以教材为准。本章上午题分值预计在15分。 目录 11.13 制定预算 11.13.1 主要输入 11.13.2 主要输出 11.14 规划质量管理 11.14.1 主要输入 11.14.2 主要工…

上海营销型网站建设公司电商erp软件

语法上的小trick 构造函数 虽然不写构造函数也是可以的,但是可能会开翻车,所以还是写上吧。: 提供三种写法: ​ 使用的时候只用: 注意,这里的A[i]gg(3,3,3)的“gg”不能打括号,否则就是强制转换…

VMware ESXi 9.0.1.0 发布 - 领先的裸机 Hypervisor

VMware ESXi 9.0.1.0 发布 - 领先的裸机 HypervisorVMware ESXi 9.0.1.0 发布 - 领先的裸机 Hypervisor Standard (标准版)、Dell (戴尔)、HPE (慧与)、Lenovo (联想)、IEIT SYSTEMS (浪潮信息)、H3C (新华三)、Cisco…