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_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/qq631243523/p/10268845.html

时间: 2024-10-09 04:10:39

Flask之Flask_Session插件的相关文章

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】第三方插件

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

基于whoosh的flask全文搜索插件flask-msearch

flask 的全文搜索插件很少,有个Flask-WhooshAlchemy,最近发现个flask-msearch,使用了下感觉不错. 安装flask-msearch pip install flask-msearch flask配置 from flask_msearch import Search ... search = Search() search.init_app(app) #如果出现"sqlalchemy ValueError"报错,那么修改为 #db = SQLalchem

Flask组件 flask_session

flask-session是flask框架的session组件,由于原来flask内置session使用签名cookie保存,该组件则将支持session保存到多个地方,如: redis memcached filesystem mongodb sqlalchmey 安装 pip3 install flask-session 存储方式 redis #!/usr/bin/env python # -*- coding:utf-8 - import redis from flask import F

Flask:Flask-script插件

Flask-Script插件扩展提供向Flask插入外部脚本的功能,包括一个开发用的服务器,一个定制的python shell,设置数据库的脚本,cronjobs,及其它运行在web应用之外的命令行任务,使得脚本与系统分开 Flask-Script与Flask本身的工作方式类似,只需要定义和添加从命令行中被Manager实例调用的命令,使用Flask-Script可以轻松的给Flask项目添加脚本命令 1.安装Flask-Script 命令: pip install flask-script 2

第四篇 与Flask相关的插件(flask-session、wtforms、SQLAchemy)

公司中使用SQL的种方式: 1. 写Django:ORM(关系对象映射), 2. 写Flask和其他:有两种方式: (1) 原生SQL:使用原生SQL有两种选择: A. pymysql (python2 和 python3均支持) B. MySQLDB (仅python2支持) (2) SQLAchemy (也是一种ORM框架,与Django的ORM类似) ORM的内部又会调用pymysql或者MySQLdb,所以其本质还是要会pymysql 和 MySQLdb 一. Flask session

浅谈 Flask 框架

一.框架对比 Django Flask Admin —— Model 原生无 Model 原生无 Form 原生无 Session 有 —— 颠覆认知操作 Django —— 教科书式框架 优势:组件全,功能全,教科书 劣势:占用资源,创建复杂度高 Flask —— 以简单为基准开发,一切从简,能省则省 优势:轻,块 劣势:先天不足,第三方组件稳定性较差 二.Flask入门 下载安装 下载:pip install Flask 注意:不要使用工具中的插件创建 Flask 项目 三行代码启动Flas

Flask中session实现原理

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

基于Flask实现后台权限管理系统 - Flask

1. Flask 1.1. 简介 Flask是使用Python编写的轻量级Web应用框架,其WSGI工具箱采用Werkzeug,模板引擎则使用Jinja2.Flask使用BSD授权,Flask也被称为“microframework”,因为它使用简单的核心,用extension增加其他功能,用户可以随意地进行组合,满足自己的要求. 一段最简单的Flask代码如下: 1 from flask import Flask 2 3 app = Flask(__name__) 4 5 6 7 @app.ro