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'

相关推荐
一株菌子9 小时前
10.9总结
开发语言·python
席万里9 小时前
Go开源库gcurl实际生产级应用
开发语言·后端·golang
yuuki2332339 小时前
【数据结构&C语言】排序大汇总
c语言·数据结构·后端·排序算法
间彧9 小时前
Docker 数据持久化完全指南:四种挂载方式详解与实战
后端
IT_陈寒9 小时前
SpringBoot 3.2 性能优化全攻略:7个让你的应用提速50%的关键技巧
前端·人工智能·后端
o***Z4489 小时前
Python包管理工具
开发语言·python
❀͜͡傀儡师10 小时前
springboot集成mqtt服务,自主下发
java·spring boot·后端·mqtt·netty
火车叼位10 小时前
兼容命令行与 Android Studio 的 JDK 策略:从踩坑到方案
后端
虹科网络安全10 小时前
艾体宝干货 | Redis Python 开发系列#4 保证原子性与性能
redis·python·junit
IMPYLH10 小时前
Lua 的 pairs 函数
开发语言·笔记·后端·junit·单元测试·lua