当前位置: 首页 > 工具软件 > flask-session > 使用案例 >

Flask--session

邵奇
2023-12-01

3. flask中的session工作机制

  1. flask中的session机制是:把敏感数据经过加密后放入session中,然后再把session存放到cookie中,下次请求的时候,再从浏览器发送过来的cookie中读取session,然后再从session中读取敏感数据,并进行解密,获取最终的用户数据。
  2. flask的这种session机制,可以节省服务器的开销,因为把所有的信息都存储到了客户端(浏览器)。
  3. 安全是相对的,把session放到cookie中,经过加密,也是比较安全的,这点大家放心使用就可以了。

4. 操作session

  1. session的操作方式:
    • 使用session需要从flask中导入session,以后所有和sessoin相关的操作都是通过这个变量来的。
    • 使用session需要设置SECRET_KEY,用来作为加密用的。并且这个SECRET_KEY如果每次服务器启动后都变化的话,那么之前的session就不能再通过当前这个SECRET_KEY进行解密了。
    • 操作session的时候,跟操作字典是一样的。
    • 添加sessionsession['username']
    • 删除:session.pop('username')或者del session['username']
    • 清除所有sessionsession.clear()
    • 获取sessionsession.get('username')
  2. 设置session的过期时间:
    • 如果没有指定session的过期时间,那么默认是浏览器关闭后就自动结束
    • 如果设置了session的permanent属性为True,那么过期时间是31天。
    • 可以通过给app.config设置PERMANENT_SESSION_LIFETIME来更改过期时间,这个值的数据类型是datetime.timedelay类型。

5. Code

# session_demo.py
 
from flask import Flask,session
import os
from datetime import timedelta
 
app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7)
 
 
# 添加数据到session中
# 操作session的时候,跟操作字典是一样的
# SECRET_KEY
 
@app.route('/')
def hello_world():
    session['username'] = 'zhiliao'
    # 如果没有指定session的过期时间,那么默认是浏览器关闭后就自动结束
    # 如果设置了session的permanent属性为True,那么过期时间是31天。
    session.permanent = True
    return 'Hello World!'
 
@app.route('/get/')
def get():
    # sesssion['username']  # 若不存在是会报错,建议使用get()
    # session.get('username')
    print(session.get('username'))
    return 'sucess'
 
@app.route('/delete/')
def delete():
    print(session.get('username'))
    session.pop('username')
    print(session.get('username'))
    return 'success'
 
@app.route('/clear/')
def clear():
    print(session.get('username'))
    # 删除session中的所有数据
    session.clear()
    print(session.get('username'))
    return 'success'
 
 
 
if __name__ == '__main__':
    app.run(debug=True)
 类似资料: