Flask表单、会话Session、Cookie完全实战
博客导语
HTTP协议是无状态协议,服务端无法识别用户身份。Cookie、Session是Web开发用户状态保持的核心方案,表单是前端数据提交的主要方式。本文详解Cookie与Session原理、区别、实战用法,搭配表单提交案例,打通用户登录、状态记忆完整流程。
一、Cookie与Session核心原理与区别
1. Cookie
存储在客户端浏览器的小型文本数据,由服务端下发,浏览器自动携带,可记录用户临时信息,不安全、容量小。
2. Session
存储在服务端的用户会话数据,通过Cookie中的session_id关联用户,安全可靠,是用户登录态保持的主流方案。
二、Cookie增删查实战
from flask import make_response, request # 设置Cookie @app.route("/set_cookie") def set_cookie(): res = make_response("Cookie设置成功") # key、value、过期时间(秒) res.set_cookie("username", "zhangsan", max_age=3600) return res # 获取Cookie @app.route("/get_cookie") def get_cookie(): username = request.cookies.get("username") return f"获取Cookie:{username}" # 删除Cookie @app.route("/del_cookie") def del_cookie(): res = make_response("Cookie删除成功") res.set_cookie("username", "", max_age=0) return res三、Session会话配置与实战
Flask Session必须配置秘钥SECRET_KEY,用于加密会话数据,否则报错。
from flask import session # 配置秘钥(项目必备) app.config["SECRET_KEY"] = "abc123456randomkey" # 设置Session @app.route("/login") def login(): session["user_id"] = 1001 session["username"] = "张三" return "登录成功,会话已保存" # 获取Session @app.route("/user") def user(): uid = session.get("user_id") return f"当前登录用户ID:{uid}" # 清空Session(退出登录) @app.route("/logout") def logout(): session.clear() return "退出登录成功"四、Flask表单提交实战
1. 前端表单页面
<form action="/submit" method="post"> 用户名:<input type="text" name="username"> 密码:<input type="password" name="pwd"> <button type="submit">提交</button> </form>2. 后端接收表单数据
@app.route("/submit", methods=["POST"]) def submit(): username = request.form.get("username") pwd = request.form.get("pwd") if username == "admin" and pwd == "123456": session["username"] = username return "登录成功" return "账号密码错误"五、核心区别与选型总结
Cookie:客户端存储、不安全、适合存储非敏感数据
Session:服务端存储、安全、适合存储用户登录态、敏感信息
所有登录系统,均采用「Session+Cookie」组合方案
