flask-session总结
一、session
session和cookie的原理和区别:
cookie是保存在浏览器上的键值对
session是存在服务端的键值对(服务端的session就是一个大字典,字典中是随机字符串)(session与request原理相同)(session原理跟上下文也有关系)
session依赖于cookie存在
session流程
当请求第一次进来,生成随机字符串
-发给用户cookie
-保存到session字典中时
它调用stark将随机字符串和对应的值放到local
视图函数
-使用时导入用top(它拿的是session)
session=LocalProxy(partile(_lookup_req_object,'session '))
请求处理完毕:
内存处理完毕后,将session做持久化(session存到数据库,存到Redis,存到加密的cookie中)
二、session源码解析
1.先执行Flask的__call__方法 ,调用出来wsgi_app,它先做request的上下文做完,请求刚进来到push中,它先处理request将请求相关的数据,然后添加到了local中,
紧接着处理session(将RequestContext对象(request,session)添加到local中),request(将request信息封装到Request(environ)对象并复制给requestContext 对 象),然后获取cookie中的随机字符串,检验是否有,没有就生成。根据随机字符串,获取服务端session保存的值。把session放到内存中,
执行wsgi_app方法下面的视图函数。执行完视图函数返回到full_dispatch_requesthong ,触发只执行一次的装饰器中(触发Flask信号),
执行完这个装饰器,紧接着执行下面的特殊的装饰器,如果这些特殊装饰器没有返回值,那么rv=None,如果有返回值,页面时就显示这个返回值,
如果没有返回值,触发执行那个视图函数,拿返回值。请求执行完返回后,调用finalize_request,对它的返回值进行封装。
如何处理的requestctx = self.request_context(environ)将request信息封装到Request(environ)对象并复制给requestContext 对象class RequestContext:def __init__(self, app, environ, request=None):self.app = appif request is None:request = app.request_class(environ)self.request = requestself.url_adapter = app.create_url_adapter(self.request)self.flashes = Noneself.session = None如何处理的sessionclass RequestContext:def push(self):将RequestContext对象(request,session)添加到local中_request_ctx_stack.push(self) 刚开始处理session #return app.session _interface.open_session(self,request) #app.session _interface=SecureCookieSessionInterface()self.session = self.app.open_session(self.request)if self.session is None:self.session = self.app.make_null_session()
三、Flask和Django的区别
请求相关的数据
-Django:参数
-Flask: 基于Local,LocalStark对象
多个请求进来会不会混淆
-单线程
-多线程
-协程
解决: from greenlet import getcurrent as get_ident
转载于:https://www.cnblogs.com/moning/p/8455511.html
flask-session总结相关推荐
- session、flask session知识的相关收集
1.打开两个浏览器窗口访问应用程序会使用同一个session还是不同的session session cookie是不能跨窗口使用的,当你新开了一个浏览器窗口进入相同页面时,系统会赋予你一个新的ses ...
- Flask session
session会话,是指将用户的信息存在服务器端.不同的框架有不同的实现方式. 在flask中,形式上是操作session对象,本质上还是将数据存在了cookie中 flask-session可以设置 ...
- Flask session详细用法
Flask session概念解释 session是基于cookie实现的,保存在服务端的键值对,形式为{随机字符串:'xxxxxx'},同时在浏览器中的cookie中也会保存相同的随机字符串,用来再 ...
- flask session伪造
通过CTF题目进行学习 首先打开题目,查看源代码发下如下注(提)释(示) 看到这个,有经验的大佬们估计可以猜到,八成这题就是要伪造admin登录 习惯性尝试一波弱口令, admin/admin adm ...
- Flask session API
1.首先设置Flask.secret_key或者配置SECRET_KEY 2.flask的session的信息保存在cookie里,默认key是session,通过SESSION_COOKIE_NAM ...
- flask session permanent
在设置了session.permanent =True 后,它也会被保存在cookie中,key 是 _permanent .如果不清除这个cookie,即使你在以后没有设置为True, sessio ...
- Flask一:安装初始,return方式,Request,Jinja2,session
一:安装和初始 1.Flask 安装 + 启动from flask import Flaskapp = Flask(__name__) # 实例化flask对象 # __name__ 多app应用,分 ...
- python客户端修改session_python中flask的Session设置的方法介绍
本篇文章给大家带来的内容是关于python中flask的Session设置的方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 什么是Session? cookie: 客户端浏览 ...
- 【Python】Flask框架系列(三):session和cookie操作、get/post请求、钩子函数
在Flask中操作session 示例:设置session的过期时间 完整版 旧版 设置session的过期时间 示例 # encoding: utf-8from flask import Flask ...
- flask总结之session,websocket,上下文管理
1.关于session flask是带有session的,它加密后存储在用户浏览器的cookie中,可以通过app.seesion_interface源码查看 from flask import Fl ...
最新文章
- 死锁产生条件-不剥夺条件
- Java并发:明白Synchronized实现原理,锁什么?
- 迁移到阿里云后,NTKO控件报存word 报文件存取错误,请检查网络传输。
- Java黑皮书课后题第5章:*5.1(统计正数和负数的个数然后计算这些数的平均值)编写程序,读入未指定个数的整数,判断读入的正数有多少个、负数有多少个,然后计算输入值的总和和平均值(不记0,浮点表示)
- 谷歌发布“虚拟现实化”游戏 Ingress
- QEMU 中音频模拟如何工作
- keras构建卷积神经网络_在Keras中构建,加载和保存卷积神经网络
- python爬虫:其他操作
- 模糊搜索神器FZF番外篇
- php选择nginx还是apache,浅谈apache和nginx的rewrite的区别
- 【Shell脚本学习7】Shell脚本学习指南分享
- 典型相关分析CCA计算过程
- linux http嗅探工具 httpry
- 西班牙语动词变位探究:陈述式现在时
- 更好的为学计算机帮助英语,北京教委公布本科跨省转学名单,两学霸为学计算机转出北大...
- 量产软件测试培训,东芝U盘量产教程-提供黑灰色版量产工具及检测软件
- Linux基础-Swap分区
- 什么是“荷花定律”?
- 做seo为什么要了解网站
- 在Word中巧改厘米标尺(转)
热门文章
- java 并发demo_《Java并发编程实践》中4.3.5章demo的一个疑问?
- php中module,module.php
- oracle需求分析,8-oracle_分析函数(二)
- 深度学习之生成对抗网络(6)GAN训练难题
- 深度学习之卷积神经网络(1)什么是卷积
- 【算法竞赛学习】AI助力精准气象和海洋预测
- JDBC概念快速入门工具类Util的写法
- 2020年国家电网计算机类考纲,终于发布!详解2020届国家电网考试大纲,带你读懂考纲变化!...
- 地表最强的MySQL安装一键式安装,信不信你下完我就给你装好!附各种Mysql安装失败的解决办法(什么你安装失败了?快来看这个)
- ST函数(ST表)RMQ O(1)查询 离线