烧瓶中的中间件

sau*_*vik 4 python cookies middleware flask

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

我发现了两种方法。

第一种方法

@app.before_request
def before_request():
   # set cookie if user is logged in
Run Code Online (Sandbox Code Playgroud)

第二种方法,通过实现类似 将简单的中间件添加到烧瓶应用程序中的方法

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

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

from flask.ext.login import current_user
Run Code Online (Sandbox Code Playgroud)

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

因此,我想知道是否决定继续执行第二个实施方案,如何检查用户是否已登录。

sju*_*dǝʊ 5

我从未使用过您提到的第二种方法。我敢肯定可以用它来完成,但这很不常见。我建议使用烧瓶的更多常见功能。为了代码的维护者:)所以您提到的第一个方法很好。

或者,您可以使用装饰器来获得更精细的访问限制。请记住,在制作实际响应对象时,可以在烧瓶中设置cookie。这意味着您应该使用“ 延迟的请求回调 ”在装饰功能中设置Cookie。