linux工程师,rhce
(1096)
(84)
(314)
(251)
(244)
(176)
(27)
分类: 系统运维
2023-03-31 17:53:28
flask是一个使用python编写的轻量级web应用框架。其wsgi工具箱采用werkzeug,模板引擎则使用 jinja2 。flask使用bsd授权。flask也被称为 “microframework”,因为它使用简单的核心,用extension增加其他功能 |
flask除请求对象之外,还有一个 session 对象。
它允许你在不同请求间存储特定用户的信息。它是在 cookies 的基础上实现的,并且对 cookies 进行密钥签名要使用会话,你需要设置一个密钥。
我们知道,在django中的session是存储在服务器中的数据库中的,也就是django_session表中,而flask中的session是交由客户端保管的,也就是存储在本地的cookie中。
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 存储的是通过 secret_key 加密后的 key , 通过这个 key 从flask程序的内存中找到用户对应的session信息
当我们开启session时,设置session["username"]="stzz",flask会帮我们创建一个字典{"username":"stzz"},然后通过secret_key 时间戳 签名经过加密生成一个字符串。
当客户端发送请求时,request请求会带上cookie,也就是session中的数据存储在其中,这个数据就是之前加密后的字符串,发送到后端后,flask会通过secret_key去解密session中的加密字符串,从而获取{"username":"stzz"}从而来验证是否登录。
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设置详解的文章就介绍到这了
本文地址:
上一篇:
下一篇:没有了