Flask_Session插件

一,介绍

因为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())

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

时间: 2024-11-06 15:43:37

Flask_Session插件的相关文章

Flask之Flask_Session插件

一,Flask_Session介绍 因为flask自带的session是将session存在cookie中: 所以才有了第三方Flask_session插件,可以将session存储在我们想存储的数据库中(redis等) 二,使用 首先需要安装一下Flask_session pip install Flask-Session from flask import Flask, request, render_template, redirect, session from flask_sessio

【Flask】第三方插件

Flask-Session 因为flask自带的session是将session存在cookie中: 所以才有了第三方Flask_session插件,可以将session存储在我们想存储的数据库中(redis等) pip install Flask-Session 将session保存在数据库中 注意redis数据库一定是在内网中的且是一台单独的服务器,防止被攻击 from flask import Flask,session,request,render_template from flask

Flask中session实现原理

前言 flask_session是flask框架实现session功能的一个插件,用来替代flask自带的session实现机制,flask默认的session信息保存在cookie中,不够安全和灵活. flask的session机制 session是用来干什么的呢?由于http协议是一个无状态的协议,也就是说同一个用户第一次请求和第二次请求是完全没有关系的,但是现在的网站基本上有登录使用的功能,这就要求必须实现有状态,而session机制实现的就是这个功能. 实现的原理: 用户第一次请求后,将

Flask的插件session、SQLAlchemy、Script、Migrate

一.flask-session 1.为什么要使用flask-session 因为flask默认的session是通过请求上下文放入到Local中的,是存在内存的,而使用flask-session可以更改session存放的位置,可以存放在redis.memcached.filesystem.mongodb.sqlalchemy等数据库中,flask-session也是基于flask原本的session原理实现的,只是让session存放的位置更改了而已. 2.使用步骤 1. 下载 pip ins

使用 Chrome 浏览器插件 Web Scraper 10分钟轻松实现网页数据的爬取

本文标签: WebScraper Chrome浏览器插件 网页数据的爬取 使用Chrome 浏览器插件 Web Scraper 可以轻松实现网页数据的爬取,不写代码,鼠标操作,点哪爬哪,还不用考虑爬虫中的登陆.验证码.异步加载等复杂问题. Web Scraper插件 Web Scraper 官网中的简介: Web Scraper Extension (Free!)Using our extension you can create a plan (sitemap) how a web site

eclipse插件之Findbugs、Checkstyle、PMD安装及使用

一.什么是Findbugs.checkstyle.PMD Findbugs.checkstyle和PMD都可以作为插件插入eclipse,当然也有单独的工具可以实现他们的功能,比如Findbugs Tool就可以不必插入eclipse就可以使用. 三者的功能如下表: 工具 目的 检查项 FindBugs 检查.class 基于Bug Patterns概念,查找javabytecode(.class文件)中的潜在bug 主要检查bytecode中的bug patterns,如NullPoint空指

eclipse安装java ee插件方法步骤

1.本人以前使用的MyEclipse进行Javaweb开发,但是后来由于myeclipse实在太臃肿,经常在运行的过程中不流畅 (可能电脑内存也不是太高吧)   !所以坚决换用eclipse,但是问题来了,下载的eclipse因为是标准版所以也不支持Javaweb开发,所以要来配置一下开发环境,安装Javaee开发插件   ,以下为安装步骤 1.1 在Eclipse中菜单help选项中选择install new software选项 1.2 在work with 栏中输入 http://down

Myeclipse10 安装Aptana插件

安装步骤: 1.下载aptana3.2 Eclipse Plugin插件. 下载地址:http://update1.aptana.org/studio/3.2/024747/index.html 2.在java文件夹下新建文件夹pluginsNew,在里面新建aptana_update_024747文件夹(这个文件夹名根据自己下载的版本自己写),再在里面新建eclipse文件夹,解压出features与plugins文件夹,COPY到 D:\java\pluginsNew\aptana_upda

这是一款借助chrome 插件的微信机器人

1.chrome kit微信机器人简介(github:https://github.com/LinuxForYQH/chrome_kit) 借助chrome 插件 js注入来实现消息的发送 chrome devtool api的调用来监听https请求 打开微信登录界面,在扫码登录前必须先打开toolbar(F12 或者 鼠标右键检查),如上所说因为借助了chrome devtool api所以需要打开toolbar才能执行相关dev域的js. 2.相关开发原理介绍 https://develo