码迷,mamicode.com
首页 > 其他好文 > 详细

Flask_Session插件

时间:2018-10-13 02:38:17      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:pat   def   div   nbsp   ini   default   bsp   Fix   随机   

一,介绍

因为flask自带的session是将session存在cookie中;

所以才有了第三方Flask_session插件,可以将session存储在我们想存储的数据库中(redis等)

二,使用

pip install Flask-Session
from flask import Flask, request, render_template, redirect, session
from flask_session import Session
import redis

app = Flask(__name__)
# app.secret_key = "123"
app.config["SESSION_TYPE"] = "redis"
app.config["SESSION_REDIS"] = redis.Redis(host="localhost", port=6379, db=3)
Session(app)

@app.route("/login", methods=("GET", "POST"))
def login():
    msg = ""
    if request.method == "POST":
        print(request.form)
        print(request.form.get("hhh"))
        username = request.form.get("username")
        pwd = request.form.get("pwd")
        if username == "ggg" and pwd == "123":
            session["user"] = username
            return redirect("/home")
        msg = "用户名或者密码错误"
    return render_template("login.html", msg=msg)

以上为我们使用Redis数据库存session的配置,我们具体使用session的方式还是和flask中自带的session一样。

三,源码

    def _get_interface(self, app):
        config = app.config.copy()
        config.setdefault(SESSION_TYPE, null)
        config.setdefault(SESSION_PERMANENT, True)
        config.setdefault(SESSION_USE_SIGNER, False)
        config.setdefault(SESSION_KEY_PREFIX, session:)
        config.setdefault(SESSION_REDIS, None)
        config.setdefault(SESSION_MEMCACHED, None)
        config.setdefault(SESSION_FILE_DIR,
                          os.path.join(os.getcwd(), flask_session))
        config.setdefault(SESSION_FILE_THRESHOLD, 500)
        config.setdefault(SESSION_FILE_MODE, 384)
        config.setdefault(SESSION_MONGODB, None)
        config.setdefault(SESSION_MONGODB_DB, flask_session)
        config.setdefault(SESSION_MONGODB_COLLECT, sessions)
        config.setdefault(SESSION_SQLALCHEMY, None)
        config.setdefault(SESSION_SQLALCHEMY_TABLE, sessions)

        if config[SESSION_TYPE] == redis:
            session_interface = RedisSessionInterface(
                config[SESSION_REDIS], config[SESSION_KEY_PREFIX],
                config[SESSION_USE_SIGNER], config[SESSION_PERMANENT])
        .......
class RedisSessionInterface(SessionInterface):
    def __init__(self, redis, key_prefix, use_signer=False, permanent=True):...
        ...

    def open_session(self, app, request): ...

    def save_session(self, app, session, response):...


# 通过重写这两个方法,实现

源码中表示我们可以这样在redis中查看存储的session

get  session:+ 随机字符串(uuid.uuid4())

 

Flask_Session插件

标签:pat   def   div   nbsp   ini   default   bsp   Fix   随机   

原文地址:https://www.cnblogs.com/glh-ty/p/9780925.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!