我想学习如何在龙卷风中使用类似web.py的ctx模块。
谢谢!
编辑: 我试图在全局上下文中保存用户的凭据,就像使用ctx模块一样。我知道这些信息可以随每个请求传递,但在这种情况下,我需要每次都将这些信息传递给处理程序吗?我想知道实现这个目标的正确方法是什么?
答案 0 :(得分:1)
您可以从RequestHandler.request
对象获取ctx
中包含的大部分信息,该对象是tornado.httpserver.HTTPRequest
个实例。
class MyHandler(tornado.web.RequestHandler):
def get(self):
# This is just some of the attributes available.
print("host is {0.host}, ip is {0.ip}, HTTP method"
" is {0.method}, protocol is {0.protocol}".format(self.request))
ctx
中包含的一些内容可能需要退出self.request.headers
,但我认为它就在那里。
Tornado不提供与ctx
提供的会话数据等效的任何内容。龙卷风被设计为无国籍,因此故意不实施。
请注意,龙卷风确实提供了一些处理身份验证的有用方法。一个是名为tornado.web.authenticated
的装饰器,您可以使用它来装饰您希望用户通过身份验证访问的任何方法。您还应该实现get_current_user
,这是authenticated
装饰器用于确定用户是否经过身份验证的内容,以及get_login_url
,它应该返回用户应该重定向到的网址,如果他们'没有登录(通常这应该是您的登录页面)。用户登录后,您可以使用set_secure_cookie
将会话存储在安全Cookie中,然后在get_current_user
内调用get_secure_cookie
以稍后验证会话。
有关使用Tornado处理会话的更多一般信息,请参阅此问题:standard way to handle user session in tornado