Flask框架中的session怎么设置

其他教程   发布日期:2023年06月30日   浏览次数:565

这篇文章主要介绍了Flask框架中的session怎么设置的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Flask框架中的session怎么设置文章都会有所收获,下面我们一起来看看吧。

    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的设置

    1. app.session_cookie_name = "I am not Session"

    其他配置

    1. 'SESSION_COOKIE_NAME': 'session', # 设置session的名字
    2. 'SESSION_COOKIE_DOMAIN': None,
    3. 'SESSION_COOKIE_PATH': None,
    4. 'SESSION_COOKIE_HTTPONLY': True,
    5. 'SESSION_COOKIE_SECURE': False,
    6. 'SESSION_REFRESH_EACH_REQUEST': True, # 是否每次都跟新
    7. 'PERMANENT_SESSION_LIFETIME': timedelta(days=31)
    8. # 设置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的使用和验证

    1. from flask.blueprints import Blueprint
    2. from flask import Response, session
    3. from flask_restful import fields, marshal
    4. from flask_sqlalchemy.query import Query
    5. from sqlalchemy import or_, and_
    6. from ..model.UserModel import User
    7. import json
    8. user_bp = Blueprint("user", __name__, url_prefix="/user")
    9. user_fields = {
    10. "id": fields.Integer,
    11. "username": fields.String,
    12. "password": fields.String,
    13. "age": fields.Integer
    14. }
    15. @user_bp.route("/hello")
    16. def hello():
    17. result = User.query.filter(or_(User.username.startswith("王"), and_(User.username == "王天祥", User.age > 21)))
    18. return marshal(result.all(), fields=user_fields)
    19. @user_bp.route("/setSession", methods=["GET", "POST"])
    20. def setSession():
    21. session["name"] = "STZZ"
    22. return "设置session成功!!!"
    23. @user_bp.route("/getSession")
    24. def getSession():
    25. username = session.get("name")
    26. if username:
    27. return username
    28. else:
    29. return "用户未登录!!!"

    以上就是Flask框架中的session怎么设置的详细内容,更多关于Flask框架中的session怎么设置的资料请关注九品源码其它相关文章!