验证码: 看不清楚,换一张 查询 注册会员,免验证
  • {{ basic.site_slogan }}
  • 打开微信扫一扫,
    您还可以在这里找到我们哟

    关注我们

Flask框架中的session怎么设置

阅读:918 来源:乙速云 作者:代码code

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

      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 "用户未登录!!!"
    分享到:
    *特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: hlamps#outlook.com (#换成@)。
    相关文章
    {{ v.title }}
    {{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
    你可能感兴趣
    推荐阅读 更多>