session 對(duì)象允許你在不同請(qǐng)求間存儲(chǔ)特定用戶的信息匣屡。它是在 Cookies 的基礎(chǔ)上實(shí)現(xiàn)的,并且對(duì) Cookies 進(jìn)行密鑰簽名荐健。這意味著用戶可以查看你 Cookie 的內(nèi)容险耀,但卻不能修改它,除非用戶知道簽名的密鑰则拷。
一個(gè)模擬登錄和登出的例子:
from flask import (
Flask,
url_for,
render_template,
request,
make_response,
session,
abort, # 放棄請(qǐng)求并返回錯(cuò)誤代碼
redirect, # 重定向
)
from werkzeug import secure_filename
app = Flask(__name__)
# 設(shè)置密鑰贡蓖,這段字符串請(qǐng)保密
app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT'
@app.route('/')
def index():
# 如果 session 有 username 字段
if 'username' in session:
return 'User:' + session['username']
return 'You are not logged in'
@app.route('/login', methods=['POST', 'GET'])
def login():
#請(qǐng)求方法為 POST
if request.method == 'POST':
# 在 session 中添加 username 字段
session['username'] = request.form['username']
return redirect(url_for('index'))
# 請(qǐng)求方法為 GET
else:
return render_template('login.html')
@app.route('/logout')
def logout():
# 刪除 session 中當(dāng)前用戶的字段
session.pop('username', None)
return redirect(url_for('index'))
if __name__ == '__main__':
app.run(
debug=True,
host='0.0.0.0',
port=3000,
)