Flask 中的 Session 不同于 Django 的 session,django 的 session 存在后端数据库中, 而 flask 的 session 会将你的 SessionID 存放在客户端的 Cookie 中, 使用起来非常的奇怪
1. Flask 中 session 是需要 secret_key 的
- from flask import session
- App = Flask(__name__)
- App.secret_key = "kjklgfjoewghoqh"
secret_key 实际上是用来加密字符串的, 如果在实例化的 App 中没有 secret_key 那么开启 session 一定会抛异常的
2. Flask 中 session 要这样用
- @App.route("/login", methods=["GET", "POST"])
- def login():
- if request.method == "POST":
- if request.form["username"] == USER["username"] and request.form["password"] == USER["password"]:
- session["user"] = USER["username"]
- return redirect("/student_list")
- return render_template("login.html", msg="用户名密码错误")
- return render_template("login.html", msg=None) # 如果前端 Jinja2 模板中使用了 msg, 这里就算是传递 None 也要出现 msg
session["user"] = USER["username"] 这样用就代表这个请求带上来的 session 中保存了一个 user=name
如果想要验证 session 的话, 就用这种方法吧
3. cookies 中的 session 是什么
cookies 中 session 存储的是通过 secret_key 加密后的 key , 通过这个 key 从 flask 程序的内存中找到用户对应的 session 信息
4. 用 session 进行验证
- @App.route("/student_list")
- def student():
- if session.get("user"):
- return render_template("student_list.html", student=STUDENT_DICT)
- return redirect("/login")
来源: http://www.bubuko.com/infodetail-2971213.html