Flask框架中的session设置详解

 更新时间:2023年02月23日 11:03:16   作者:双天至尊-王天龙  
Flask是一个使用Python编写的轻量级Web应用框架。其WSGI工具箱采用Werkzeug,模板引擎则使用 Jinja2 。Flask使用BSD授权。Flask也被称为 “microframework”,因为它使用简单的核心,用extension增加其他功能

Flask中的session

session设置

Flask除请求对象之外,还有一个 session 对象。

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

我们知道,在django中的session是存储在服务器中的数据库中的,也就是django_session表中,而flask中的session是交由客户端保管的,也就是存储在本地的cookie中。

session的方法:

  • session['username'] = 'stzz';设置session
  • session.pop("username",None);删除session

关于session的设置

app.session_cookie_name = "I am not Session"

其他配置

'SESSION_COOKIE_NAME':                  'session',  # 设置session的名字
'SESSION_COOKIE_DOMAIN':                None,
'SESSION_COOKIE_PATH':                  None,
'SESSION_COOKIE_HTTPONLY':              True,
'SESSION_COOKIE_SECURE':                False,
'SESSION_REFRESH_EACH_REQUEST':         True,  # 是否每次都跟新
'PERMANENT_SESSION_LIFETIME':           timedelta(days=31)  
# 设置session的过期时间

cookies中的session

cookies 中 session 存储的是通过 secret_key 加密后的 key , 通过这个 key 从flask程序的内存中找到用户对应的session信息

session序列化机制

当我们开启session时,设置session["username"]="stzz",flask会帮我们创建一个字典{"username":"stzz"},然后通过secret_key + 时间戳 + 签名经过加密生成一个字符串。

session反序列化机制

当客户端发送请求时,request请求会带上cookie,也就是session中的数据存储在其中,这个数据就是之前加密后的字符串,发送到后端后,flask会通过secret_key去解密session中的加密字符串,从而获取{"username":"stzz"}从而来验证是否登录。

session的使用和验证

from flask.blueprints import Blueprint
from flask import Response, session
from flask_restful import fields, marshal
from flask_sqlalchemy.query import Query
from sqlalchemy import or_, and_
from ..model.UserModel import User
import json
user_bp = Blueprint("user", __name__, url_prefix="/user")
user_fields = {
    "id": fields.Integer,
    "username": fields.String,
    "password": fields.String,
    "age": fields.Integer
}
@user_bp.route("/hello")
def hello():
    result = User.query.filter(or_(User.username.startswith("王"), and_(User.username == "王天祥", User.age > 21)))
    return marshal(result.all(), fields=user_fields)
@user_bp.route("/setSession", methods=["GET", "POST"])
def setSession():
    session["name"] = "STZZ"
    return "设置session成功!!!"
@user_bp.route("/getSession")
def getSession():
    username = session.get("name")
    if username:
        return username
    else:
        return "用户未登录!!!"

到此这篇关于Flask框架中的session设置详解的文章就介绍到这了,更多相关Flask session内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 用python制作个音乐下载器

    用python制作个音乐下载器

    这篇文章主要介绍了用python制作个音乐下载器,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2021-01-01
  • Python实现3行代码解简单的一元一次方程

    Python实现3行代码解简单的一元一次方程

    这篇文章主要介绍了Python实现3行代码解简单的一元一次方程,很适合Python初学者学习借鉴,需要的朋友可以参考下
    2014-08-08
  • 精心整理总结的Python自动化测试面试题

    精心整理总结的Python自动化测试面试题

    简单来说,自动化测试框架包含了所有的测试工作所需的测试框架,下面这篇文章主要给大家介绍了关于Python自动化测试面试题的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • python实现两个dict合并与计算操作示例

    python实现两个dict合并与计算操作示例

    这篇文章主要介绍了python实现两个dict合并与计算操作,结合具体实例形式分析了Python使用collections.Counter进行字典dict合并与遍历输出相关操作技巧,需要的朋友可以参考下
    2019-07-07
  • 基于Python实现五子棋游戏

    基于Python实现五子棋游戏

    这篇文章主要为大家详细介绍了基于Python实现五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Python蒙特卡洛算法实现排列组合

    Python蒙特卡洛算法实现排列组合

    排列组合是数学中的基本概念,也是编程中常见的问题之一,本文主要介绍了Python蒙特卡洛算法实现排列组合,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • TensorFlow2.0矩阵与向量的加减乘实例

    TensorFlow2.0矩阵与向量的加减乘实例

    今天小编就为大家分享一篇TensorFlow2.0矩阵与向量的加减乘实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • 使用Dajngo 通过代码添加xadmin用户和权限(组)

    使用Dajngo 通过代码添加xadmin用户和权限(组)

    这篇文章主要介绍了使用Dajngo 通过代码添加xadmin用户和权限(组),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • python获取网页中所有图片并筛选指定分辨率的方法

    python获取网页中所有图片并筛选指定分辨率的方法

    下面小编就为大家分享一篇python获取网页中所有图片并筛选指定分辨率的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • 详解使用Selenium爬取豆瓣电影前100的爱情片相关信息

    详解使用Selenium爬取豆瓣电影前100的爱情片相关信息

    这篇文章主要介绍了详解使用Selenium爬取豆瓣电影前100的爱情片相关信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03

最新评论