Python之Flask登录认证--before_request

2023-05-16


from flask import Flask, render_template, request, Response, redirect, session, url_for

app = Flask(__name__)
# app.debug = True  # 自动重启功能
app.config.from_object("settings.DevelopmentConfig")
USRS = {
    1: {"name": "张三", "age": 18, 'gender': '男'},
    2: {"name": "张三", "age": 18, 'gender': '男'},
    3: {"name": "张三", "age": 18, 'gender': '男'},
    4: {"name": "张三", "age": 18, 'gender': '男'}
}

"""
redirect_to="/", 重定向到另一个页面
subdomain="admin"  子域名

请求相关的全部在request
Django中间件实现装饰器的频繁添加,那么什么是中间件呢?

"""
import functools


# 进行统一的拦截,请求拦截后.视图函数不执行,也可以用装饰器
@app.before_request
def before_req1(*args, **kwargs):
    # 如果是login,可以通过白名单
    if request.path == '/login':
        return None
    user = session.get('user_info')
    if user:
        return None
    return redirect("/login")
    print("请求之前")


@app.before_request
def before_req2(*args, **kwargs):
    # 如果是login,可以通过白名单
    if request.path == '/login':
        return None
    user = session.get('user_info')
    if user:
        return None
    return redirect("/login")
    print("请求之前")


# 第一次请求做,其他的时候都不需要,比如:数据库连接池的管理,初始化操作,只是一个标识
@app.before_first_request
def first(*args, **kwargs):
    pass


@app.after_request
def process_response1(response):
    # 返回值存在
    print("process_response1走了")
    return response
    pass


# 定制错误信息
@app.errorhandler(404)
def error(arg):
    return "404错误"


@app.after_request
def process_respons2(response):
    # 返回值存在
    print("process_response2走了")
    return response
    pass


@app.route('/detail/<int:nid>', methods=['GET', 'POST'])  # 重定向
def detail(nid):
    print(nid)
    info = USRS.get(nid)
    return render_template('detail.html', info=info)
    pass


@app.route('/index', methods=['GET', 'POST'])
def index():
    return render_template('index.html', user_dict=USRS)


@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == "GET":
        return render_template('login.html')
    else:
        # request.query_string
        usename = request.form.get('username')
        password = request.form.get("password")
        if usename == 'alex' and password == "123":
            # 记录用户登录
            session['user_info'] = usename
            return redirect('/index')
        return render_template('login.html  ', error="用户名或者密码错误")


if __name__ == '__main__':
    app.run()
# 装饰器(检验用户认证)
  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python之Flask登录认证--before_request 的相关文章

随机推荐

  • PID介绍 PID调参 串级PID

    鉴于串级PID在pixhawk系统中的重要性 xff0c 无论是误差的补偿 xff0c 如姿态解算 xff1b 还是控制的实现 xff0c 如姿态控制 xff0c 位置控制 xff0c 靠的都是串级的pid xff0c 这里我们先对串级pi
  • 【通俗讲5G】第一次有人把5G讲的这么简单明了

    关于5G通信 xff0c 常见的文章都讲的晦涩难懂 xff0c 不忍往下看 xff0c 特转载一篇 xff0c 用大白话实现5G入门 简单说 xff0c 5G就是第五代通信技术 xff0c 主要特点是波长为毫米级 xff0c 超宽带 xff
  • 终于有人把云计算、大数据和 AI 讲明白了

    原标题 xff1a 不是技术也能看懂云计算 xff0c 大数据 xff0c 人工智能 我今天要讲这三个话题 xff0c 一个是云计算 xff0c 一个大数据 xff0c 一个人工智能 xff0c 我为什么要讲这三个东西呢 xff1f 因为这
  • 常用锁原理的介绍(上)

    本文是学习 多处理器编程的艺术 的笔记 下面主要介绍了一些常用的锁的原理 xff0c 这些只是一些理论 xff0c 离我们实际使用还是有一些差距的 不过这种理论也往往是相对比较好容易理解了掌握的 xff0c 只有了解了这些理论 xff0c
  • 实时数据库数据采集接口API八爪鱼采集接口

    实时数据库数据采集接口是针对国内外各种实时数据库系统 PI IP21等 和DCS PLC等数据源之间的进行实时数据通讯的工具 主要包含IOServer服务器和IOClient客户端两个部分 xff1a IO Server运行在实时数据库服务
  • 实时操作系统的任务调度示例之时间片

    摘要 在之前的一篇博文实时操作系统的任务调度示例之抢占中 xff0c 以实验和代码的形式讲解了不同优先级任务同时出在就绪态中 xff0c 高优先级的任务总是先得到运行 这里就留下了一个问题 xff0c 如果多个出于就绪态的任务具有相同优先级
  • 避障算法之3DVFH+

    目录 一 3DVFH 43 论文翻译 摘要 1 引言 2 相关工作 3 八叉树地图 4 3DVFH 43 4 1 第一步 xff1a 八叉图探索 4 2 第二步 xff1a 二维基础极直方图 2D Primary Polar Histogr
  • linux及C++书籍推荐

    盘点一下今年看的书 xff0c 记录下学习历程也向大家分享一些书籍 xff1a Unix编程3剑客 xff1a RichardSteven的大著 Unix网络编程卷1 xff08 套接字联网api xff09 Unix环境高级编程 Unix
  • 机场跑道检测论文阅读笔记

    机场跑道检测论文阅读笔记 A Robust Vision based Runway Detection and Tracking Algorithm for Automatic UAV Landing 来自沙特的KAUST xff0c 20
  • Jetson AGX Xavier使用笔记

    由于毕设的缘故 xff0c 从业无人机相关 xff0c 嵌入式GPU首选Xavier xff0c 撰文记录一下刷机心得 xff0c 欢迎小伙伴们热烈讨论 xff0c 共同学习 1 刷机 网上教程很多 xff0c 但我依然刷了很久才搞定 xf
  • 稀疏编码SparseNet

    大名鼎鼎的稀疏编码 xff0c 源自1996 记录一下使用sparsenet的心得 0 My Prerequisite Windows10matlab 2016bmingw64 为了节省内存 xff0c 我把matlab2016b装在了移动
  • PX4学习笔记5:数据录制及离线处理

    本文内容主要包括 xff0c rosbag的录制以及消息的离线处理 1 rosbag录制 录制双目相机发布的图片话题如下命令 rosbag record O obs5 bag stereo right image raw stereo le
  • PX4学习笔记3: 速度控制

    记录一下PX4在offboard板外模式下用速度控制四旋翼的过程 参考资料如下 PX4板外模式教程youtube速度控制小实验PX4飞行模式offboard模式offboard模式控制例子 注意 必须2Hz以上的频率发布控制消息 否则PX4
  • 使用matlab将mat矩阵存储为xml文件

    参考链接如下 xff1a 原文 改后 function createxml name1 mat1 name是输入的文件名 xff0c datatest是matlab中的矩阵 一般都是float格式存储的 name2 datatest2 xd
  • Optiver Realized Volatility:Introduction to financial concepts and data - [中文翻译]

    Introduction to financial concepts and data Optiver波动率预测概述评估时间线预测时间线 金融概念与数据介绍订单簿 Order Book 交易 xff08 Trade xff09 做市与市场效
  • 特征工程:tsfresh构造时间序列特征

    本文基本上是对tsfresh官方文档的部分翻译 kaggle上使用可以参考tsfresh features and regression blend Feature extraction settings 对于懒人 xff1a 让我计算一些
  • 港科大VINS-MONO入门(一):框架入门及源码解析

    一 VINS介绍 VINS Mono是HKUST的Shen Shaojie团队开源的一套Visual Inertial融合定位算法 介绍见 https github com HKUST Aerial Robotics VINS Mono 论
  • ROS学习笔记(三):rosrun和runlaunch的用法

    一 区别 rosrun是运行一个单独节点的命令 xff0c 如果要运行多个节点 xff0c 则需要使用多次rosrun命令 roslaunch采用XML的格式对需要运行的节点进行描述 xff0c 可以同时运行多个节点 例如 xff1a lt
  • Javascript>> onmouseover用法

    lt DOCTYPE html gt lt html gt lt head gt lt title gt Window Title lt title gt lt head gt lt body gt lt p gt Test your mo
  • Python之Flask登录认证--before_request

    from flask import Flask render template request Response redirect session url for app 61 Flask name app debug 61 True 自动