简单介绍flask框架中的session设置-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 1001150
  • 博文数量: 1096
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 11060
  • 用 户 组: 普通用户
  • 注册时间: 2018-03-07 15:17
个人简介

linux工程师,rhce

文章分类

(1096)

  • (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
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设置详解的文章就介绍到这了


    本文地址:

    阅读(697) | 评论(0) | 转发(0) |
    0

    上一篇:

    下一篇:没有了

    给主人留下些什么吧!~~
    ")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
    网站地图