Flask session详细用法

本文详细介绍了Flask session的概念,包括它是如何基于cookie在服务端保存数据的。重点讲解了配置SECRET_KEY的重要性,以及如何操作session如同操作字典。此外,还探讨了设置session过期时间和更改存储位置的方法,提供了流程解析和相关代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Flask session概念解释

session是基于cookie实现的,保存在服务端的键值对,形式为{随机字符串:‘xxxxxx’},同时在浏览器中的cookie中也会保存相同的随机字符串,用来再次请求时验证

注意:Flask中的session是保存在浏览器中的,默认的key是session(加密的cookie),当然也可以将其保存在数据库中

flask中有一个session对象,它允许你在不同请求间存储特定用户的信息。它是在cookie的基础上实现的,并且对cookie进行密钥签名要使用会话,你需要设置一个密钥

同request一样,session基于上下文管理

配置SECRET_KEY

因为flask的session是通过加密后保存在cookie中的,有加密就需要有解密用的密钥,所以只要用到了flask的session模块,就一定要配置’SECRET_KEY’这个全局宏。一般设置为24位的字符。配置方法有两种
配置方法一:
新建一个config.py文件配置secret_key
config.py

SECRET_KEY='XXXXXXXXXX'

然后在主运行文件里面添加config文件里面的内容
main.py

from flask import Flask,session
import config
app=Flask(__name__)

配置方法二:
直接在主运行模块里面配置,配置config的时候也是和操作字典是一样的
main.py

from flask import Flask,session
app=Flask(__name__)
app.config['SESSION_KEY']='XXXXXX'
#或 app.secret_key='xxxxxxx'

操作session ----与操作字典相同

#增
session['username']='helloWorld' 
#查
result=session['key']       ###如果key不存在,会raise Error
result=session.get('key')   ###如果key不存在,返回None
#删
session.pop('key')
#清空session
session.clear

设置session的过期时间

  • 如果没有指定session的过期时间,默认是浏览器关闭以后就自动结束
  • session.permanent=True在flask下可以将有效期延长至一个月
  • 给app.config设置PERMANENT_SESSION_LIFETIME来更改有效期,这个值的数据类型是datetime.timedelta类型。在登陆网页界面的时候,有个‘记住我’的选项,如果点击了就把session的有效期延长一些,使用的就是这个。前提是要session.permanent=True
from flask import Flask,session
from datetime import timedelta
import os

app=Flask(__name__)

app.config['SECRET_KEY']=os.urandom(24)
session.permanent=True
app.config['PERMANENT_SESSION_LIFETIME']=datetime.timedelta(days=7)

class datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])

os.urandom(n) 返回一个有n个byte长的string,很适合勇于加密。这个函数返回的随机字节是根据不同的操作系统特定的随机函数资源。即,这个函数是调用OS内部自带的随机函数的。有特异性。
urandom中的u,文档中有这样的一句:The returned data should be unpredictable enough for cryptographic applications。注意到这个 unpredictable, 再结合之前所说的根据os底层来实现的,所以,u 应该是表示难以预料的意思。
os.urandom(n)参考于https://blog.csdn.net/a19990412/article/details/80934268

flask中session的流程详解

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

step1:

用户请求的request进来,实例化RequestContext,创建request_context对象,初始化session为空

在这里插入图片描述
在这里插入图片描述

step2:

当接受到用户请求之后,会调用Flask对象的session_interface对象的open_session方法,以此来获取一个session对象。

step3:

数据返回给用户,并把内容中的session重新保存

在这里插入图片描述在这里插入图片描述
由上面两张图片中的代码可以看出,session确实是存储在浏览器中的。

更改session存储位置

这个博主写的很好,就直接贴链接了,侵删

https://www.cnblogs.com/big-handsome-guy/p/8550310.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值