Python武器库开发-flask篇之session与cookie(二十六)

flask篇之session与cookie(二十六)

在 Flask 中,可以使用 session 来在不同请求之间存储和传递数据。Session 在客户端和服务器端之间交换,但是数据存储在服务器端。

Session 与 Cookie 的区别

session 和 cookie 都可以用来在不同请求之间存储和传递数据,但是它们有一些不同之处:

  1. 存储位置:session 是存储在服务器端的,而 cookie 是存储在客户端的。
  2. 安全性:session 比 cookie 更安全,因为数据存储在服务器端,客户端无法篡改。而
    cookie存储在客户端,如果数据没有加密或签名,那么客户端可以篡改 cookie 中的数据。
  3. 存储容量:session 可以存储更多的数据,因为数据存储在服务器端。而 cookie 的大小限制较小。

在实际开发中,应根据需求来选择 session 或 cookie。如果需要存储一些敏感数据,那么应该使用 session 来保证安全性。如果只需要存储一些简单的数据,那么可以使用 cookie 来方便地在不同请求之间传递数据。

使用Session

要在 Flask 中使用 session,需要先安装 Flask-Session 扩展。安装方法如下:

pip install flask-session

安装好后,在 Flask 中使用 session 就很简单了。首先,需要在 app 初始化中配置 session。例如:

from flask import Flask
from flask_session import Session

app = Flask(__name__)
app.config['SESSION_TYPE'] = 'filesystem'
app.config['SECRET_KEY'] = 'mysecretkey'
Session(app)

这个例子中,我们指定了 session 存储的类型是文件系统,也可以使用其他的存储类型(例如 redis)。SECRET_KEY 是用来签名 session 数据的密钥,所以必须设置它。

在代码中使用 session 也很简单。可以像使用字典一样来操作 session。例如:

这个例子中,我们将一个 key 为 ‘username’,value 为 ‘admin’ 的数据存储到了 session 中。

#!/usr/bin/env python3

from flask import Flask
from flask import session

app.secret_key='kdjklfjk87384hjdhjh'

@app.route('/')
def index():
    return 'Hello World!'

@app.route('/set_session')
def set_seesion():
    #设置session持久化
    session.permanent = True
    session['username'] = 'admin'
    return '成功设置 session'

@app.route('/get_session')
def get_session():
    value = session.get('username')
    return '成功获取seesion的值为 {}'.format(value)

if __name__ == '__main__':
    app.run(debug=True)

然后通过 get_session 这个函数去获取我们之前存在session 中的value值

保存这些代码,接下来我们去运行这个脚本

python3 app.py

在这里插入图片描述

任意浏览器输入URL地址:http://127.0.0.1:5000/set_session ,如图成功设置我们的 seesion

在这里插入图片描述

浏览器输入URL地址:http://127.0.0.1:5000/get_session ,如图成功获得我们设置的 seesion 的value值

在这里插入图片描述

使用Cookie

在 Flask 中,可以使用 cookie 来在客户端和服务器端之间交换数据。与 session 不同的是,cookie 是存储在客户端的。使用 cookie 可以方便地在不同请求之间传递数据。

在 Flask 中使用 cookie 也很简单。可以使用 Response 对象的 set_cookie 方法来设置 cookie,例如:

#!/usr/bin/env python3
from flask import Flask, Response

app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello World!'

@app.route('/set_cookie')
def set_cookie():
    resp = Response('Hello, World')
    resp.set_cookie('username', 'admin')
    return resp
   
if __name__ == '__main__':
    app.run(debug=True)

保存这些代码,接下来我们去运行这个脚本

python3 app.py

在这里插入图片描述

浏览器输入URL地址:http://127.0.0.1:5000/set_cookie,这个例子中,我们在返回的响应中设置了一个名为 ‘username’,值为 ‘admin’ 的 cookie。

在这里插入图片描述

在 Flask 中读取 cookie 也很简单。可以使用 request 对象的 cookies 属性来获得所有的 cookies,例如:

#!/usr/bin/env python3
from flask import Flask, request, Response

app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello World!'

@app.route('/set_cookie')
def set_cookie():
    resp = Response('Hello, World')
    resp.set_cookie('username', 'admin')
    return resp
@app.route('/get_cookie')
def get_cookie():
    username = request.cookies.get('username')
    return f'Hello, {username}'

if __name__ == '__main__':
    app.run(debug=True)

保存这些代码,接下来我们去运行这个脚本

python3 app.py

在这里插入图片描述

浏览器输入URL地址:http://127.0.0.1:5000/get_cookie,这个例子中,我们通过 request 对象的 cookies 属性来获取名为 ‘username’ 的 cookie,并将其值作为响应返回。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

麦克风阵列入门

文章引注: http://t.csdnimg.cn/QP7uC 一、麦克风阵列的定义 所谓麦克风阵列其实就是一个声音采集的系统,该系统使用多个麦克风采集来自于不同空间方向的声音。麦克风按照指定要求排列后,加上相应的算法(排列算法)就可…

STM32串口重定向/实现不定长数据接收

STM32串口重定向/实现不定长数据接收 重定向MicroLIB 不定长数据接收 这是一期STM32内容代码分享,关于STM32重定向的代码和一些出现的问题吗,以及串口接收不定长数据思路 重定向 重定向的功能:能够在STM32中使用printf函数通过串口发送数据 …

常见树种(贵州省):001松类

摘要:本专栏树种介绍图片来源于PPBC中国植物图像库(下附网址),本文整理仅做交流学习使用,同时便于查找,如有侵权请联系删除。 图片网址:PPBC中国植物图像库——最大的植物分类图片库 一、华山松…

【评估分级方法】自然断点法(Python实现全代码)

自然断点法 自然断点法有两个称呼,一个就是直接英文名称,叫做“Natural Breaks”,这就不解释了,还有一个称呼就是ArcGIS里面用的,叫做“Jenks”,主要是来源于它的创造者:乔治弗雷德里克詹克斯&…

中间件安全: Apache 远程代码执行 (CVE-2021-42013)

中间件安全: Apache 远程代码执行 (CVE-2021-42013) Apache HTTP Server是美国阿帕奇(Apache)基金会的一款开源网页服务器。该服务器具有快速、可靠且可通过简单的API进行扩充的特点,发现 Apache HTTP Ser…

ComText让机器人有了情节记忆

为了让人类与机器人更好地交流,MIT 计算机科学与人工智能实验室的研究员开发了一个名为 ComText 的程序。这款程序给机器人增加了情节记忆,让它们能够接受更加复杂的命令。目前,他们已经在机器人 Baxter 上测试了程序。 机器人没有情景化的记…

Java,集合框架,关于Map接口与Collections工具类

目录 Map接口 Map及其实现类的对比: HashMap中元素的特点: 相关方法: 添加、修改操作: 删除操作: 元素查询的操作: 元视图操作的方法: TreeMap的使用: Properties类: Collections工具…

2023上海初中生古诗文大会复赛12月2日举行,关键事项为您划重点

今天中午12点,古诗文大会官微发布消息:2023上海中学生古诗文大会(初中组)复选将于12月2日举行。 具体安排和注意事项、常见问题,六分成长为您整理如下。 一、2023年初中生古诗文大会复赛日期和时间 12月2日&#xff…

前端调试只会console.log()?

前言 相信大家在日常开发中调试代码是必不可少的步骤,毕竟谁也不能保证代码不出问题,总得debug一下,输出信息看看数据有没有问题。是不是习惯性console.log(‘XXX’)或者debugger呢。而JavaScript中的console对象提供了丰富的方法用于更灵活…

学生邮箱白嫖/免费安装JetBrains全家桶(IDEA/pycharm等) —— 保姆级教程

🧸欢迎来到dream_ready的博客,📜相信您对博主首页也很感兴趣o (ˉ▽ˉ;) 博主首页,更多redis、java等优质好文以及各种保姆级教程等您挖掘! 目录 前言 JetBrains全家桶介绍 申请过程: 获取学…

AIGC ChatGPT4 读取接口文件并进行可视化分析

数据分析的过程中,对数据文件进行可视化分析是每个数据分析师必备的技能。如下图数据源。 现在需要对各地区的销量进行汇总,使用Python来进行分析。 但是又不想写代码,或者不会Python代码,可以用ChatGPT4来帮我们完成代码的编写。 完整的Python代码: import pandas as p…

【装机】第一次装机记录

本篇文章记录第一次装机的过程。 配置 部件型号CPUAMD 锐龙 R5 7500F主板华硕 TUF GAMING A620M-PLUS显卡耕升 RTX4070 踏雪内存金百达 黑刃 DDR5 16G/32G 6000硬盘铠侠 2TB EXCERIA Pro SE10 极至超速系列电源微星 MAG A650BN散热利民 AX120 R SE AGHP逆重力热管支持LGA1700…

微服务实战系列之Gateway

前言 人类世界自工业革命以来,无论从金融、货币、制度,还是科技、资源、社会各个方面,都发生了翻天覆地的变化。物质极大丰富,从而也推动了科技的极速发展。当计算机问世也仅仅不到80年,而如今我们的生活处处有它的影子…

【Python从入门到进阶】42、使用requests的Cookie登录古诗文网站

接上篇《41、有关requests代理的使用》 上一篇我们介绍了requests代理的基本使用,本篇我们来学习如何利用requests的Cookie登录古诗文网。 一、登录网站及目的介绍 我们需要Cookie模拟登录的网站为:https://www.gushiwen.cn/(古诗文网&…

关于2023年编程语言使用排行我的看法

一、2022、2023年编程语言使用排行榜 从这个表格中,我们可以看到Python在两次调查中都排第一。对这件事情,很多人有了不同的看法。一个小粉丝问我,凭什么、又是为什么。下面,我展开我的理解。 二、Python为什么排第一&#xff1f…

Jmeter——循环控制器中实现Counter计数器的次数重置

近期在使用Jmeter编写个辅助测试的脚本,用到了多个Loop Controller和Counter。 当时想的思路就是三个可变的数量值,使用循环实现;但第三个可变值的数量次数,是基于第二次循环中得到的结果才能确认最终次数,每次的结果…

【碰碰球】弹珠游戏-微信小程序项目开发流程详解

还记得小时候玩过的弹珠撞击游戏不,这里把它的实现原理通俗易懂地讲一下,看看怎样实现一个碰碰球(弹珠)小游戏,除了个人玩法,也可以双人玩哦,与打乒乓球一样的,可练习临场反应。 创建项目 打开微信开发者…

自动驾驶学习笔记(九)——车辆控制

#Apollo开发者# 学习课程的传送门如下,当您也准备学习自动驾驶时,可以和我一同前往: 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo Beta宣讲和线下沙龙》免费报名—>传送门 文章目录 前言 控制器设计 比例积分微分控制 线性…

[C/C++] 数据结构 LeetCode:用队列实现栈

题目描述: 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack 类: void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元…

Vulhub靶场-KIOPTRIX: LEVEL 1.1

目录 环境配置 端口扫描 漏送发现 漏送利用 提权(内核漏洞提权) 环境配置 环境配置的过程同主页该专栏第一个靶场,不在赘述。 端口扫描 首先通过arp-scan并根据靶机的mac地址确定靶机的IP地址 然后对靶机进行一个扫描 首先扫描到OpenS…
最新文章