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

flask篇之session与cookie(二十六)

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

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

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

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

使用Session

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

python 复制代码
pip install flask-session

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

python 复制代码
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 中。

python 复制代码
#!/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值

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

python 复制代码
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,例如:

python 复制代码
#!/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)

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

python 复制代码
python3 app.py

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

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

python 复制代码
#!/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)

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

python 复制代码
python3 app.py

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

相关推荐
冷雨夜中漫步4 小时前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
郝学胜-神的一滴4 小时前
深入解析Python字典的继承关系:从abc模块看设计之美
网络·数据结构·python·程序人生
百锦再4 小时前
Reactive编程入门:Project Reactor 深度指南
前端·javascript·python·react.js·django·前端框架·reactjs
m0_736919106 小时前
C++代码风格检查工具
开发语言·c++·算法
喵手6 小时前
Python爬虫实战:旅游数据采集实战 - 携程&去哪儿酒店机票价格监控完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集结果csv导出·旅游数据采集·携程/去哪儿酒店机票价格监控
2501_944934736 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
helloworldandy6 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
黎雁·泠崖7 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
2301_763472467 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法
肖永威8 小时前
macOS环境安装/卸载python实践笔记
笔记·python·macos