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'

相关推荐
REDcker22 分钟前
RESTful API设计规范详解
服务器·后端·接口·api·restful·博客·后端开发
毕设源码-钟学长1 小时前
【开题答辩全过程】以 基于Python的健康食谱规划系统的设计与实现为例,包含答辩的问题和答案
开发语言·python
百***78751 小时前
Grok-4.1技术深度解析:双版本架构突破与Python API快速集成指南
大数据·python·架构
2501_942191772 小时前
基于YOLO11-HSFPN的数字检测与识别模型实现详解
python
没有bug.的程序员2 小时前
Java 序列化:Serializable vs. Protobuf 的性能与兼容性深度对比
java·开发语言·后端·反射·序列化·serializable·protobuf
忧郁的橙子.3 小时前
26期_01_Pyhton基本语法
python
sunfove3 小时前
实战篇:用 Python 徒手实现模拟退火算法解决 TSP 问题
开发语言·python·模拟退火算法
我爱娃哈哈4 小时前
SpringBoot + Spring Security + RBAC:企业级权限模型设计与动态菜单渲染实战
spring boot·后端·spring
我是菜鸟0713号4 小时前
Qt + Python 算法集成的一种低耦合实践:FastAPI 服务化方案
python·qt·fastapi
我是一只小青蛙8884 小时前
TraeCNIDE Python开发全流程指南
python