Flask 中使用 Cookie 维持用户会话
在 Flask 中,你可以通过 make_response() 函数或直接在响应对象上设置 Cookie。同时,Flask 还提供了 session 对象,它内部使用 Cookie(或服务器端存储)来管理会话数据,但提供了更高级的抽象,使得开发者无需直接处理 Cookie 的细节。
直接操作 Cookie
如果你需要直接操作 Cookie,可以这样做:
python复制代码
from flask import Flask, make_response | |
app = Flask(__name__) | |
@app.route('/set_cookie') | |
def set_cookie(): | |
resp = make_response("Cookie has been set") | |
resp.set_cookie('username', 'JohnDoe', max_age=3600) # 设置 Cookie,有效期为 1 小时 | |
return resp | |
@app.route('/get_cookie') | |
def get_cookie(): | |
username = request.cookies.get('username') | |
return f'Username from Cookie: {username}' | |
if __name__ == '__main__': | |
app.run(debug=True) |
注意:上述代码示例中缺少了 from flask import request 的导入,实际使用时需要添加。
使用 Flask 的 Session
虽然直接操作 Cookie 是可行的,但 Flask 提供的 session 对象通常更为方便和强大。它允许你像操作字典一样操作会话数据,而 Flask 会负责在 Cookie 和服务器端存储之间同步这些数据。
python复制代码
from flask import Flask, session | |
app = Flask(__name__) | |
app.secret_key = 'your_secret_key' # 用于加密 session 数据的密钥 | |
@app.route('/set_session') | |
def set_session(): | |
session['username'] = 'JohnDoe' | |
return 'Session has been set' | |
@app.route('/get_session') | |
def get_session(): | |
username = session.get('username') | |
return f'Username from Session: {username}' | |
if __name__ == '__main__': | |
app.run(debug=True) |
在这个例子中,session 对象被用来存储和检索用户会话中的 username。注意,为了安全起见,你需要设置一个 secret_key,Flask 将使用这个密钥来加密存储在 Cookie 中的会话数据。
通过这两种方式,你可以在 Flask 应用中有效地使用 Cookie 来维持用户会话,提升用户体验。