目录

Flask之服务端持久化session

需求如下:开发一个web界面,用户经过oauth认证后,给用户生成一个随机密码显示出来,并将用户名和密码发送给radiusserver用来当作WIFI密码。
因为希望密码不要随便就更换,那样员工出去再进来,手机就需要重新输入新密码才能连WIFI,容易被人打。所以用session存储的方式,将密码保存一定时间。

什么是session

session基于cookie实现,保存在服务端的键值对(dict类型),同时在浏览器中的cookie中也对应一相同的随机字符串,用来再次请求的时候验证 Flask中的session是加密的,所以需要配置SECRET_KEY

开始使用

导入模块

from flask import Flask, render_template, request, session

配置SECRET_KEY

app.secret_key = os.getenv("SECRET_KEY", "not set key")

设置session类型

可以存临时文件,还可以存redis、memcached、mongodb等

app.config[‘SESSION_TYPE’] = ‘filesystem’

设置session过期时间,默认是浏览器关闭就过期

app.config[‘PERMANENT_SESSION_LIFETIME’] = 3600

设置session

添加session

# 设置session
@app.route('/')
def set():
    session['username'] = 'zhanglikun'
    return 'success'

读取session

 # 读取session
@app.route('/get')
def get():
    # return session['username']
    return session.get('username')

session['username']session.get('username')都可以获取到值,不同的是:
session[‘username’] 键不存在就会异常
session.get(‘username’) 键不存在时返回None

删除session

@app.route('/delete/')
def delete():
    print session.get('username')
    session.pop('username', None)
    print session.get('username')
    return 'success'

清除session中所有数据

@app.route('/clear')
def clear():
    print session.get('username')
    # 清除session中所有数据
    session.clear()
    print session.get('username')
    return 'success'