Flask--session
发布日期:2021-05-14 12:21:23 浏览次数:12 分类:精选文章

本文共 2150 字,大约阅读时间需要 7 分钟。

Flask-Session技术深入解析

一、什么是Flask session?

Flask session是一种轻量级的 tutti session 处理机制,主要用于存储临时用户数据。与其他 session 系统不同,Flask session 操作更加简便且高效。

二、session的工作机制

session 的工作原理可以分为以下几个步骤:

  • 客户端第一次访问服务器时,浏览器通过发送-cookie请求到服务器
  • 服务器接收到请求后,会创建一个新的 session,并将 敒 داده 加密后存储到这个 session 中
  • 服务器完成处理后,将 session 的信息通过 Set-Cookie 头部字段返回给客户端
  • 客户端将接收到的 cookie 记录下来,并在后续请求时发送给服务器
  • 服务器根据 cookie 读取 session 数据,解密敏感数据,从而获取用户信息
  • 三、session的优点

    使用 Flask 的 session 有以下几个显著优势:

  • 服务器无需存储 sessions ASCII
  • session 内存占用极低
  • 敒 数据 加密 使用 strong 加密算法
  • 四、session操作方法

    在 Flask 中操作 session 的基本方法包括:

  • 获取 session 变量:
  • session.get(key)
    1. 设置 session 变量:
    2. session[key] = value
      1. 删除 session 右值:
      2. session.pop(key)
        1. 清空 session:
        2. session.clear()
          1. 获取 session 的创建时间:
          2. session.modified

            五、session的有效时间管理

            Flask 提供了 严格控制 session 过期时间的方法:

          3. 未设置过期时,默认为浏览器关闭时自动过期
          4. 设置 PERMANENT_SESSION_LIFETIME 可以指定 session 的有效天数
          5. 如果使用 permanent=True 告知,session 会在浏览器过期前自动刷新获取新 session
          6. 六、基于 session 的案例代码

            示例代码一:用户认证系统

            from flask import Flask, request, session, abort
            import os
            app = Flask(__name__)
            app.config['SECRET_KEY'] = os.urandom(24)
            @app.route('/')
            def index():
            if not session.get('name'):
            abort(401)
            return 'Hello World'
            @app.route('/login')
            def login():
            name = request.args.get('name')
            pwd = request.args.get('pwd')
            if name == 'zhangsan' and pwd == '123456':
            session['name'] = name
            return '登录成功'
            return '用户名或密码错误'
            @app.route('/logout')
            def logout():
            session.pop('name', None)
            return '退出成功'

            示例代码二:Session 数据持久化

            from flask import Flask, session, render_template
            import datetime
            app = Flask(__name__)
            app.config['SECRET_KEY'] = os.urandom(24)
            app.config['PERMANENT_SESSION_LIFETIME'] = datetime.timedelta(days=7)
            @app.route('/')
            def index():
            if 'username' not in session:
            return redirect(urlfor='login')
            return render_template('home.html', username=session['username'])

            七、基于session的权限控制

            在 Flask 应用中,可以利用 session 较为灵活地实现权限受控:

            from flask import Flask, request, session, abort
            import os
            app = Flask(__name__)
            app.config['SECRET_KEY'] = os.urandom(24)
            @app.route('/')
            def index():
            if session.get('权限级别') != '管理员':
            abort(403)
            return '系统管理界面'

            以上内容完整涵盖了 Flask session 的核心知识点。

    上一篇:Flask模板--环境管理
    下一篇:Centos--tomcat安装配置

    发表评论

    最新留言

    做的很好,不错不错
    [***.243.131.199]2025年04月17日 03时48分26秒