(二十四)Flask之flask-session组件

每篇前言:


在这里插入图片描述

Flask-session

session的基本使用:

from flask import Flask, session

app = Flask(__name__)
app.secret_key = 'GuHanZhe'


@app.route('/login')
def login():
    session['name_txt'] = 'guhanzhe'
    return 'Login'  


@app.route('/index')
def index():
    name = session['name_txt']
    print(name)
    return 'Index'


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

默认session是用如下这个类处理的(当触发存session操作的时候执行的是这个类的open_session方法):

from flask.sessions import SecureCookieSessionInterface
app.session_interface = SecureCookieSessionInterface

那么,如果我们将这个类换一个呢?

【flask-session组件闪亮登场~】

Flask-Session 是一个 Flask 扩展,用于在 Flask Web应用程序中提供会话(session)管理功能。会话是一种用于存储和跟踪用户特定数据的机制,通常用于存储用户登录状态、购物车内容、用户首选项等数据,以便在多个HTTP请求之间保持用户状态。

值得一提的是:Flask-Session 支持不同的存储选项,如文件系统、Redis、数据库等。我们可以根据项目的需求选择合适的存储后端【本文就以Redis为例~】。

在这里插入图片描述

进去看一下这个类,分析它的open_session方法:
在这里插入图片描述

第一句,上图箭头所指session_cookie_name是啥嘞?

在这里插入图片描述

其实就是获取客户端中session的Name【如上图所示】。

如果用户第一次请求,继续分析源码:

在这里插入图片描述

而在用户这个请求结束的时候会执行对应的save_session方法:

在这里插入图片描述

通过set_cookie,客户端那就会存有uuid生成的随机字符串(唯一标识,下次请求携带,服务器端就可以认出来啦~)。

RedisSessionInterface类参数如下:
在这里插入图片描述

还有第二种使用redis保存session的方法:

from flask import Flask, session
from flask.ext.session import Session
from redis import Redis


app = Flask(__name__)
app.secret_key = 'GuHanZhe'

app.config['SESSION_TYPE'] = 'redis'
app.config['SESSION_REDIS'] = Redis(host='127.0.0.1', port='6379')
app.config['SESSION_PERMANENT'] = False  # 设置会话是否是永久的
app.config['SESSION_USE_SIGNER'] = True  # 使用签名来保护会话数据
app.config['SESSION_KEY_PREFIX'] = 'myapp_'  # 自定义会话键前缀
Session(app)


@app.route('/login')
def login():
    session['name_txt'] = 'guhanzhe'
    return 'Login'


@app.route('/index')
def index():
    name = session['name_txt']
    print(name)
    return 'Index'


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

为啥这样也可以呢?

让我们进Session源码一探究竟:

在这里插入图片描述

在这里插入图片描述

上图中config['SESSION_USE_SIGNER']的作用(前面其实看到过~):

在这里插入图片描述

相关推荐

  1. flask web学习flask与http(

    2024-03-11 16:02:03       35 阅读
  2. flask web学习flask与http(

    2024-03-11 16:02:03       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-11 16:02:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-11 16:02:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-11 16:02:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-11 16:02:03       20 阅读

热门阅读

  1. 什么是IP白名单?为什么要设置IP白名单?

    2024-03-11 16:02:03       24 阅读
  2. web3 DePIN赛道之OORT

    2024-03-11 16:02:03       19 阅读
  3. TCP/IP超全笔记 - TCP篇

    2024-03-11 16:02:03       23 阅读
  4. Django——路由

    2024-03-11 16:02:03       21 阅读
  5. 嵌入式学习day33

    2024-03-11 16:02:03       23 阅读
  6. 前端安全方面

    2024-03-11 16:02:03       25 阅读
  7. 列表解析扩展使用

    2024-03-11 16:02:03       20 阅读
  8. nginx配置缓存静态资源

    2024-03-11 16:02:03       24 阅读
  9. c++ vector使用

    2024-03-11 16:02:03       22 阅读
  10. python中的错误和异常

    2024-03-11 16:02:03       22 阅读
  11. 网络安全风险评估:详尽百项清单要点

    2024-03-11 16:02:03       20 阅读
  12. C++中的常量指针和指针常量

    2024-03-11 16:02:03       22 阅读