Flask 统一拦截器

python 复制代码
import os
 
from flask import Flask, request, session
 
app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)  # 生成24位的随机数种子,用于产生SESSION ID
 
 
@app.route('/article/<int:article_id>')
def test(article_id):
    """
    路由地址参数, 必须同步定义在接口函数里,作为形参
    """
    return f'你正在访问编号为:{article_id}的文章'
 
 
@app.route('/sess')
def sess():
    session['is_login'] = 'true'
    return 'done'
 
 
@app.before_request
def before():
    """
    针对app实例定义全局拦截器
    """
    url = request.path  # 读取到当前接口的地址
    if url == '/sess':
        pass
    elif session.get('is_login', '') != 'true':
        return '你还没有登录'
    else:
        pass
    
 
if '__name__' == '__main__':
    app.run()

模块拦截器

也叫视图拦截器,只针对某一个模块进行拦截,应用于Blueprint模块中。

把需要事前拦截的接口和拦截器一起放在一个视图模板里

comment = Blueprint('comment', name)

#评论操作前通过模块拦截器判断--用户是否登录

@comment.before_request

def before_comment():

#未登录情况下允许获取评论

if session.get('islogin') is None or session.get('islogin') != 'true':

return '你还没有登录,不能发表评论'

return 'not-login'

相关推荐
2401_884454151 分钟前
mysql如何处理大量重复值索引_mysql索引存储特征分析
jvm·数据库·python
kexnjdcncnxjs11 分钟前
SQL批量删除不同条件的记录_使用IN子句简化删除逻辑
jvm·数据库·python
2303_8212873813 分钟前
如何安装Oracle 12c Cloud Control_OMS服务端组件与Agent部署
jvm·数据库·python
Be reborn13 分钟前
用例不是孤立执行的:依赖、变量池与 storage_state 设计
python·自动化·pytest
m0_6091604915 分钟前
React Flow 边缘错位与消失问题的根源分析与 Hooks 重构方案
jvm·数据库·python
Marvel__Dead16 分钟前
微调 Gemma 4 识别腾讯天御全系列验证码【解决方案-一个模型识别 滑块|文字点选|图标点选|空间点选】
人工智能·爬虫·python·验证码识别·ai 大模型
weixin_4440129317 分钟前
CSS怎样调整弹性项目排列顺序_使用order属性轻松控制DOM显示顺序
jvm·数据库·python
程序员阿明18 分钟前
spring boot + vue3 实现RSA加密解密
java·spring boot·后端
iuvtsrt18 分钟前
SQL处理分组聚合时的NULL值处理_利用NVL函数
jvm·数据库·python
明月_清风22 分钟前
Redis 数据类型全景解析:从基础到高阶,一文掌握九大核心结构与应用场景
redis·后端