我刚刚提到使用 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/