欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Flask 中内置的 Session 应用

程序员文章站 2022-05-23 11:08:45
[TOC] Flask中的Session非常的奇怪,他会将你的SessionID存放在客户端的Cookie中,使用起来也非常的奇怪 1.Flask 中 session 是需要 secret_key 的 2.session抛异常 secret_key 实际上是用来加密字符串的,如果在实例化的app中没 ......

flask中的session非常的奇怪,他会将你的sessionid存放在客户端的cookie中,使用起来也非常的奇怪

1.flask 中 session 是需要 secret_key 的

from flask import session
app = flask(__name__)
app.secret_key = "i am session"   #这里只需要随机指定一个字符串即可

2.session抛异常

secret_key 实际上是用来加密字符串的,如果在实例化的app中没有 secret_key 那么开启session一定会抛异常的

  Flask 中内置的 Session 应用

3.session 用法:

session["user"] = user["username"] 这样用就代表这个请求带上来的session中保存了一个user=name
如果创建验证session的话,就用这种方法吧

user = {'username': 'anny', 'password': "123"}
@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

4.验证session

cookies 中的 session 是什么?

cookies 中 session 存储的是通过 secret_key 加密后的 key , 通过这个 key 从flask程序的内存中找到用户对应的session信息

@app.route("/student_list")
def student():
    if session.get("user"):   #session存在
        return render_template("student_list.html", student=student_dict)

    return redirect("/login")