原文: http://106.13.73.98/__/111/
Flask中的Session非常的奇怪,它会将你的SessionID存放到客户端的Cookie中,
使用起来也非常的奇怪。
Flask中使用Session,需要先设置secret_key
from flask import Flask
app = Flask(__name__)
app.secret_key = 'encrypted'
# secret_key是用来加密字符串的
# 如果在实例化的app中没有secret_key,那么开启session一定会抛异常
Flask中要这样使用Session
from flask import Flask, request, render_template, redirect, session, url_for
app = Flask(__name__)
app.secret_key = 'encrypted' # 设置secret_key
userinfo = {'username': 'zyk', 'password': '123'} # 模拟数据库中的数据
@app.route('/home')
def home():
if session.get('user_session'): # 获取存到浏览器的sessionID
print(session)
return 'This is home page.'
return redirect(url_for('login'))
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form.get('username')
password = request.form.get('password')
if username == userinfo.get('username') and password == userinfo.get('password'):
session['user_session'] = username # 存入session ⚠️⚠️
return redirect(url_for('home'))
return render_template('test08.html', msg="用户名或密码错误")
return render_template('test08.html')
if __name__ == '__main__':
app.run('127.0.0.1', 5000, debug=True)
session['user_session'] = username 这一步骤将存储Session.
*
Flask中要这样验证Session**
cookies中存储的sessionID是通过secret_key加密后的key,通过这个key从Flask程序的内存中找到用户对应的session信息,完整步骤见上面的代码.
from flask import Flask, redirect, session, url_for
@app.route('/home')
def home():
if session.get('user_session'): # 获取存到浏览器的sessionID
print(session)
return 'This is home page.'
return redirect(url_for('login'))