python - flask 中的中间件

标签 python cookies flask middleware

我刚刚提到使用 Flask 并试图在我的项目中实现一个小功能。目的是仅当请求来自经过身份验证的用户时才设置 cookie。

我找到了两种方法。

第一种方法

@app.before_request
def before_request():
   # set cookie if user is logged in

第二种方法,通过实现这样的东西 adding-a-simple-middleware-to-your-flask-application

有人可以向我解释这两种方法之间的主要区别是什么,以及应该在何时何地使用哪种方法。

此外,我目前正在使用“flask-login”来跟踪登录用户。 如果我使用第一种方法,我可以通过导入 current_user 轻松验证是否有人登录

from flask.ext.login import current_user

但如果我在使用第二种方法时尝试执行相同操作,则 current_user 始终为“None”,因为应用程序上下文不正确。

所以,我想知道如果我决定继续进行第二个实现,我该如何检查用户是否已登录。

最佳答案

我从来没有使用过你提到的第二种方法。我确信可以用它来完成,但这种情况很少见。我建议使用 flask 的更多常见功能。为了代码的维护者:) 所以你提到的第一种方法没问题。

或者您可以使用 decorators以获得更细粒度的访问限制。请记住 setting cookies in flask可以在制作实际响应对象时完成。这意味着你应该使用 Deferred Request Callbacks用于在修饰函数中设置 cookie。

关于python - flask 中的中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38678864/

相关文章:

python - 部署 Flask,并行请求

python - 查找两个数据帧的具有最大匹配条目/值数量的列

javascript - 一个可以设置域cookie的javascript书签是否会破坏跨域安全?

http - Firefox将安全Cookie发送到本地主机

python-3.x - 使用 cURL POST csv/文本文件

Docker 不保存使用 python 创建的文件 - Flask 应用程序

javascript - 未捕获的类型错误 : Object (JS Function) has no method 'apply'

python - 如何在 NLTK tokenize 中放置关键字?

python - 如何绕过机器人检测并使用 python 抓取网站

PHP 设置 cookie 本地主机不起作用