我需要在 Tornado 上运行的应用程序中通过 cookie 对用户进行身份验证。我需要解析 cookie 并使用 cookie 内容从数据库加载用户。在检查 Tornado RequestHandler documentation 时,有两种方法:
prepare()
类的 RequestHandler
方法。 get_current_user()
类的 RequestHandler
方法。 我对以下声明感到困惑:
我不明白其中的两件事:
get_current_user()
可能不是协程是什么意思?这里可能不是什么意思?它要么可以是协程,要么不能。 get_current_user()
?如果 prepare()
可以是协程而 get_current_user()
可能不是,那么 prepare()
不应该用于异步操作吗? 我真的很感激这方面的任何帮助。
最佳答案
prepare()
,但在这句话之前是两个例子,而 get_current_user
是第一个。 “后者”是指使用 prepare()
的第二个示例。 所以总而言之,无论您是否需要协程,它总是可以覆盖
prepare()
并设置 self.current_user
。如果您不需要协程来获取当前用户,您可以改写 get_current_user()
,它会在第一次访问 self.current_user
时自动调用。你选择哪一个并不重要;你可以使用你觉得更自然的那个。 (我们有两种不同方法的原因是 get_current_user()
较旧,但我们不得不为协程使用不同的方法)关于python - 用户认证 : prepare vs get_current_user in tornado,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36739681/