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

什么是session

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

开始使用

导入模块

1
from flask import Flask, render_template, request, session

配置SECRET_KEY

1
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

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

读取session

1
2
3
4
5
 # 读取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

1
2
3
4
5
6
@app.route('/delete/')
def delete():
print session.get('username')
session.pop('username', None)
print session.get('username')
return 'success'

清除session中所有数据

1
2
3
4
5
6
7
@app.route('/clear')
def clear():
print session.get('username')
# 清除session中所有数据
session.clear()
print session.get('username')
return 'success'