自己做设计图的app/seo厂家电话
cookie和session的使用
# 概念:cookie 是客户端浏览器上的键值对
# 目的:为了做会话保持
# 来源:服务端写入的,服务端再返回的响应头中写入,浏览器会自动取出来存起来是以key value 形式,有过期时间、path、http only等等
# 使用:只要浏览器中有cookie,再次向当前域发送请求,都会自动携带在请求头中
cookie:"name=lqz;age=19"
# 不安全问题---》cookie中发了敏感数据---》客户能看到obj.set_cookie() # cookie设置 request.COOKIES.get() # cookie取值 request.COOKIES.clear() # 清空
# 我们需要让cookie变的安全---》敏感数据不在cookie中方法,而放在session中
-session是服务端的键值对
-session跟cookie有什么关系呢?把key,以cookie的形式,存到浏览器中
{111:{name:lqz,age:19,password:123},222:{name:zs,age:19,password:666}}
sessionid:111
# 当前浏览器以后再发请就会携带过来
-我们根据带过来的cookie 111----》 从 session中取出对应的数据
# session的使用:必须要先迁移表, session存在服务端的, 默认情况下存在, django-session表中
配置文件:SESSION_ENGINE = 'django.contrib.sessions.backends.db' # django项目有两套配置文件:内置一套,项目自己一套
# django-session表的字段:
session_key: sessionid:随机字符串
session_data: 真正的数据(加密了)
expire_date: 过期时间request.session.get() # 取值 request.session['name']='lqz' # 赋值
# session的本质执行原理:
1 咱么写了request.session['name']='lqz',本质就是向session 对象中放入了name=lqz
2 当前视图函数结束---->经过 【中间件】------>返回给了前端
django 内置了一个session中间件
判断:request.session 有没有变化,如果有变化
# 情况一:django-session表中没有数据
在表中创建出一条数据,随机生成一个字符串[随机字符串session_key],把数据存入django-session表
session_key:adsfasd
session_data: name=lqz 加密后存到里面
sessionid:adsfasd 把随机字符串写入到cookie中
# 情况二:django-session表中有数据
把session中所有的值加密后, 更新到django-session表的session_data中,其他不变
3 下次 再发请求进入任意视图函数---》又会经过【中间件】---》视图函数
视图函数中取session:request.session.get('age')
浏览器发请求(携带cookie过来)---》到了中间件---》根据sessionid取出随机字符串
拿着随机字符串去django-session中查【session_key】---》 能查到就把 session_data的数据解密---》放到request.session中无则添加,有则更新,请求来,取出随机字符串对比,正确则解密
后续视图函数中,才能取出值session的中间件把上述内容完成了:
procee_request process_response django.contrib.sessions.middleware.SessionMiddleware
# 配置session 存放路径(未完成,需要你完成)
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' SESSION_ENGINE = 'django.contrib.sessions.backends.file' SESSION_FILE_PATH='c://xxx/x' SESSION_COOKIE_NAME = 'xxx' from django.conf import settings from django.contrib.sessions.backends import
中间件
# 概念:中间件是介于request与response处理之间的一道处理过程,能在全局上改变django的输入与输出。因为改变的是全局,所以需要谨慎实用,用不好会影响到性能
# 作用:
1 全局的请求拦截---》如果它没有登录---》就不允许访问
2 拦截所有请求,获取请求的ip地址
3 记录所有用户的访问日志
4 统一在响应头中加数据
# 代码上:就是一个类,类中有几个方法MIDDLEWARE = ['django.middleware.security.SecurityMiddleware',# session相关的中间件'django.contrib.sessions.middleware.SessionMiddleware',# 公共中间件---》访问不带 / 路径,如果有 带 / 的路径,他会让你重定向到这个地址'django.middleware.common.CommonMiddleware',# csrf认证 xss cors'django.middleware.csrf.CsrfViewMiddleware',# 认证:request.user--->这个中间件做的'django.contrib.auth.middleware.AuthenticationMiddleware',# django的消息框架---》flask--》闪现'django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware', ]
# 自定义中间件来使用,记录用户的请求地址和user-agent
class SaveRemoteAddr(MiddlewareMixin):def process_request(self, request):# request 是WSGIRequest 的对象# print(request.session) # 一定要保证,session的中间件要在上面# 这个request 就是当次请求的request# 取出ipip = request.META.get('REMOTE_ADDR')user_agent = request.META.get('HTTP_USER_AGENT')print(ip)print(user_agent)# return HttpResponse('不让你看了') # 不会再走视图函数了
# 能返回的情况:
1 None,表示执行完这个代码,经过中间件,继续执行,最后进视图函数
2 四件套,后续不走了,中间件的process_response---》直接返回给浏览器了
# 中间件,在响应头加入访问时间:import datetime class AddHeaderMiddleWare(MiddlewareMixin):def process_response(self, request, response):# request中有没有session? 有# request 如果在视图函数中,往request中放了值,在这里,就可以取出来 request.xxx# print(request.xxx)# 所有cookie中都带# response.set_cookie('xxxxx', 'asdfds')# 写入到响应头,访问服务端的时间response['ttt'] = datetime.datetime.now()return response # 一定要返回response对象
csrf认证相关
# 概念:csrf是跨站请求伪造
# 攻击原理:
-在同一个浏览器中,如果登录了A网站,没有退出,在B网站中,向A网站发送请求,浏览器会自动携带A网站的cookie,对于A网站后端来讲, 它就分辨不清到底是用户真实发的请求,还是黑客网站发的请求【都会携带用户真实的cookie】
# 如何防范:
django解决了这个问题,只要发送post请求,必须携带一个csrf_token 随机字符串(后端给的)
# 这个随机字符串可以带的位置:
1 请求体中(urlencoded,form-data):{csrfmiddlewaretoken:asdfasdf}
2 放在请求头中:'X-CSRFToken':asdfasdfasd
3 ajax提交数据:默认是urlencoded,放在请求体中没有任何问题$.ajax({method: 'post',data: {username, password, csrfmiddlewaretoken},success: function (res) {console.log(res)}})
4 ajax提交,使用json格式---》就不能放在请求体中,只能放在请求头中:
$.ajax({method: 'post',headers:{'X-CSRFToken':csrfmiddlewaretoken},contentType: 'application/json',data: JSON.stringify({username, password}),success: function (res) {console.log(res)}})
# post 提交的数据,都是从request.POST中取,前提是:必须是urlencoded和form-data格式
# 如果使用ajax发送请求:
redirect render就用不了了
尽量使用JsonResponse
Auth的使用
# 概念:Auth就是django 的一个app,做用户管理
# 作用:Auth模块是Django自带的用户认证模块
我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能,这还真是个麻烦的事情呢。Django作为一个完美主义者的终极框架,当然也会想到用户的这些痛点。它内置了强大的用户认证系统–auth,它默认使用 auth_user 表来存储用户数据
# 默认的用户表示auth_user,创建一个用户:可以用代码,可以用命令
# 模块常用方法:
authenticate():一般需要username 、password两个关键字参数提供了用户认证功能,即验证用户名以及密码是否正确,如果认证成功(用户名和密码正确有效),便会返回一个 User 对象, authenticate()会在该 User 对象上设置一个属性来标识后端已经认证了该用户,且该信息在后续的登录过程中是需要的。
user = authenticate(username='usernamer',password='password')
login(HttpRequest, user):
登录认证通过,调用一下这个方法,以后从request.user中才能取出当前登录用户
logout(request): 退出,一定要调用
is_authenticated():
判断当前用户是否登录--不能使用request.user 是否有值来判断,因为他一直有值
request.user.is_authenticated()
orm的链接方式
django的orm的 __ 链表,使用什么链接方式?
在Django ORM中,双下划线连接语法本身并不直接对应特定的SQL连接类型。当使用双下划线时,Django ORM会根据模型之间的关系和查询的具体情况自动选择适当的SQL连接方式,包括INNER JOIN、LEFT OUTER JOIN等。
在实际使用中,我们通常涉及到 INNER JOIN(内连接)和 LEFT OUTER JOIN(左连接),因为这两者是最常见的连接方式。INNER JOIN 用于匹配两个表中符合条件的行,而 LEFT OUTER JOIN会返回左表中的所有行,以及右表中与左表匹配的行。
中间件+logru案例
记录用户访问所用接口用的时间---》记录到日志中---》logru---》打印出来即可
- ip user-agent total_time
pip install loguru # 安装loguru模块
middle_key.py from django.utils.deprecation import MiddlewareMixin from app01 import models from loguru import logger import datetimeclass MyMiddlew(MiddlewareMixin):def process_request(self, request):addr = request.META.get('REMOTE_ADDR')llq = request.META.get('HTTP_USER_AGENT')request.time = datetime.datetime.now()models.ShuJu.objects.create(ShuJu_REMOTE_ADDR=addr, user_agent=llq)logger.add('runtime_{time}.log', retention=10) # 文件名,创十个logger.info('进入时间为:{}', request.time)def process_response(self, request, response):to_time = datetime.datetime.now()time = to_time - request.timeprint(time)logger.warning('结束时间{}', time)return response
auth模块案例
如果用户登录了,打印用户的用户名
log.info('')
# 迁移auth表格 python manage.py createsuperuser
from django.contrib import auth from loguru import logger def demo01(request):if request.method == 'GET':return render(request, 'caojiyh.html')else:username = request.POST.get('username')password = request.POST.get('password')print(password)user = auth.authenticate(request, username=username, password=password)print(user)if user:auth.login(request, user)user=request.userlogger.info('用户名是{}', user)print(request.user)return redirect('/home/')else:return render(request, 'caojiyh.html', {'error': '用户名或密码错误'})
IP访问频率限制案例
基础版:总共能访问5次(数据库,session)
高级版:做IP访问频率限制,一分钟只能访问5次
今日思维导图:
相关文章:

计算机基础知识65
cookie和session的使用 # 概念:cookie 是客户端浏览器上的键值对 # 目的:为了做会话保持 # 来源:服务端写入的,服务端再返回的响应头中写入,浏览器会自动取出来 存起来是以key value 形式,有过期时间、path…...

Python开发运维:Python垃圾回收机制
目录 一、理论 1.Python垃圾回收机制 一、理论 1.Python垃圾回收机制 (1)引⽤计数器 1)环状双向链表 refchain 在python程序中创建的任何对象都会放在refchain链表中。 name "david" age 20 hobby ["篮球",游泳…...

ros2/ros安装ros-dep||rosdep init错误
第一个错误的做法: sudo apt-get install python3-pip sudo pip3 install 6-rosdep sudo 6-rosdep 如果使用上述代码将会摧毁整个系统,不重装系统反正我是搞不定啊,因为我不知道那个写软件的人到底做了什么。因为这个我安装的版本是humble&…...

《深入理解计算机系统》学习笔记 - 第四课 - 机器级别的程序
Lecture 05 Machine Level Programming I Basics 机器级别的程序 文章目录 Lecture 05 Machine Level Programming I Basics 机器级别的程序intel 处理器的历史和体系结构芯片的构成AMD 公司(Advanced Micro Devices,先进的微型设备) C, 汇编, 机器代码定义汇编/机器…...

云原生(Cloud Native)——概念,技术,背景,优缺点,实践例子
云原生(Cloud Native)是一种构建和运行应用程序的方法,这些应用程序充分利用云计算的优势。云原生应用程序通常设计为在现代、动态的环境中运行,如公共云、私有云和混合云。这种方法强调微服务架构、容器化、自动化、易于管理和可…...

ElasticSearch之线程池
ElasticSearch节点可用的CPU核的数量,通常可以交给ElasticSearch来自行检测和判定,另外可以在elasticsearch.yml中显式指定。样例如下: node.processors: 2如下表格中的processors即CPU核的数量。 线程池的列表 线程池名称类型线程数量队列…...

StoneDB-8.0-V2.2.0 企业版正式发布!性能优化,稳定性提升,持续公测中!
11月,StoneDB 新版本如期而至,这一个月来我们的研发同学加班加点,持续迭代:在 2.2.0 版本中,我们针对用户提出的需求和做出了重量级更新,修复了一些已知和用户反馈的 Bug,同时对部分代码进行…...

【数据结构 — 排序 — 插入排序】
数据结构 — 排序 — 插入排序 一.排序1.1.排序的概念及其运用1.1.1排序的概念1.1.2排序运用1.1.3 常见的排序算法 二.插入排序2.1.直接插入排序2.1.1.算法讲解2.1.2.代码实现2.1.2.1.函数定义2.1.2.2.算法接口实现2.1.2.3.测试代码实现2.1.2.4.测试展示 2.2.希尔排序2.2.1.算法…...

物联网后端个人第十四周总结
物联网方面进度 1.登陆超时是因为后端运行的端口和前端监听的接口不一样,所以后端也没有报错,将二者修改一致即可 2.登录之后会进行平台的初始化,但是初始化的时候会卡住,此时只需要将路径的IP端口后边的内容去掉即可 3.阅读并完成了jetlinks…...

在uniapp中,可以使用那些预定义的样式类
u-flex:设置元素为弹性布局。u-flex-v:设置元素为纵向弹性布局。u-flex-h:设置元素为横向弹性布局。u-p-10:设置元素的上下左右边距为10rpx。u-p-t-10:设置元素的上边距为10rpx。u-p-b-10:设置元素的下边距…...

mybatis的数据库连接池
直接看原文 原文链接:【MyBatis】 连接池技术_mybatis自带连接池-CSDN博客 本文先不说springBoot整合mybatis后的 本文讲的是没有被springBoot整合前的mybatis自己的默认的连接池 --------------------------------------------------------------------------------------…...

Vue 的 el-select 下拉选项中,只有当文字超出时才显示提示框,未超出的则不显示
Vue 的 el-select 下拉选项中,只有当文字超出时才显示提示框,未超出的则不显示 <template><div><el-select v-model"selected" placeholder"请选择"><el-optionv-for"item in options":key"it…...

【Python】pptx文件转pdf
要将PPTX文件转换为PDF格式,你可以使用Python的python-pptx库来读取PPTX文件,然后使用comtypes库在Windows上或unoconv在Linux上来进行转换。但是,需要注意的是,comtypes依赖于Microsoft Office,而unoconv依赖于LibreO…...

response应用及重定向和request转发
请求和转发: response说明一、response文件下载二、response验证码实现1.前置知识:2.具体实现:3.知识总结 三、response重定向四、request转发五、重定向和转发的区别 response说明 response是指HttpServletResponse,该响应有很多的应用&…...

CentOS常用基础命令大全(linux命令)2
CentOS常用基础命令大全(linux命令) 1.关机 (系统的关机、重启以及登出 ) 的命令 shutdown -h now 关闭系统(1) init 0 关闭系统(2) telinit 0 关闭系统(3) shutdown -h hours:minutes & 按预定时间关闭系统 shutdown -c 取消按预定时间关闭系统 sh…...

分析阿里巴巴的微服务依赖图和性能
论文对阿里巴巴集群中部署的大规模微服务进行了全面的研究。他们分析了 7 天内 20,000 多个微服务的行为,并根据收集的 100 亿条调用跟踪来分析它们的特征。该论文获得SOCC 2021最佳论文奖。 他们发现: 微服务图在运行时是动态的 大多数图形像树一样分…...

Linux——基本指令(一)
写在前面: 我们云服务器搭建的Linux系统,使用的镜像版本CentOS 7.6,使用的Xshell远程连接云服务器 前面我们使用超级管理员root账号登录,一般我们使用普通用户登录,那么如何创建新用户呢? 1.创建新用户 (…...

虚幻学习笔记10—C++函数与蓝图的通信
一、前言 除了上一章C变量与蓝图通信讲的变量能与蓝图通信外,还有函数和枚举也可以和蓝图通信。函数的关键字为”UFUNCTION“、枚举的关键字为”UENUM“。 二、实现 2.1、BlueprintCallable蓝图中调用 该函数时带执行的,带入如下。编译成功后在蓝图中输…...

无重复字符的最长子串(LeetCode 3)
文章目录 1.问题描述2.难度等级3.热门指数4.解题思路方法一:暴力法方法二:滑动窗口 参考文献 1.问题描述 给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。 s 由英文字母、数字、符号和空格组成。 示例 1: 输…...

交付《啤酒游戏经营决策沙盘》的项目
感谢首富客户连续两年的邀请,交付《啤酒游戏经营决策沙盘》的项目,下周一JSTO首席学习官Luna想让我分享下系统思考与投资理财,想到曾经看过的一本书《深度思维》,看到一些结构来预判未来。不仅仅可以应用在企业经营和组织发展上&a…...

油猴(Tampermonkey)浏览器插件简单自定义脚本开发
介绍 浏览器插件,包括油猴插件和其他插件,通过它们可以实现浏览器网页的定制化与功能增强。 其他插件一般只有某种具体的功能,且已经写死而不能更改,比如Adblock插件只用于去广告。 油猴插件是一款用于管理用户脚本的插件&…...

BGP综合
1、使用PreVal策略,确保R4通过R2到达192.168.10.0/24。 2、使用AS_Path策略,确保R4迪过R3到达192.168.11.0/24。 3、配置MED策略,确保R4通过R3到达192.168.12.0/24。 4、使用Local Preference策略,确保R1通过R2到达192.168.1.0…...

库函数qsort的使用及利用冒泡排序模拟实现qsort
文章目录 🚀前言🚀void*类型指针🚀库函数qsort的使用🚀利用冒泡排序实现库函数qsort() 🚀前言 今天阿辉将为大家介绍库函数qsort的使用,还包括利用冒泡排序模拟实现qsort以及void*类型的指针,关…...

mybatis和mybatisplus中对 同namespace 中id重复处理逻辑源码解析
一、背景 同事在同一个mapper.xml (namespace相同),复制了一个sql没有修改id,正常启动项目。但是我以前使用mybatis的时候如果在namespace相同情况下,id重复,项目会报错无法正常启动,后来看代码…...

linux下部署frp客户端服务端-内网穿透
简介 部署在公司内部局域网虚拟机上的服务需要在外网能够访问到,这不就是内网穿透的需求吗,之前通过路由器实现过,现在公司这块路由器不具备这个功能了,目前市面上一些主流的内网穿透工具有:Ngrok,Natapp&…...
Markdown to write
这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…...

ResNeXt(2017)
文章目录 Abstract1. Introductionformer workour work 2. Related Work多分支卷积网络分组卷积压缩卷积网络Ensembling 3. Method3.1. Template3.2. Revisiting Simple Neurons3.3. Aggregated Transformations3.4. Model Capacity 4. Experiment 原文地址 源代码 Abstract 我…...

DreamPlace 的下载安装与使用
DreamPlace 是一款芯片放置工具,用于宏单元(macro)和标准单元(Standard Cell)的放置以及布线,并计算 HPWL、Overlap 等用于衡量芯片性能的参数。 一、环境 1. 系统环境:Ubuntu 20.04 DreamPla…...

FPGA模块——SPI协议(读写FLASH)
FPGA模块——SPI协议(读写FLASH) (1)FLASH芯片 W25Q16BV(2)SPI协议(3)芯片部分命令1.Write Enable(06h)2.Chip Erase (C7h / 60h)3.写指令(02h&am…...

SQL自学通之表达式条件语句与运算
目录 一、目标 二、表达式条件语句 1、表达式: 2、条件 2.1、WHERE 子句 三、运算 1、数值型运算: 1.1、加法() 1.2、减法 (-) 1.3、除法(/) 1.4、乘法 (*) 1.5、取模 (%) 优先级别…...