我一直在关注Tornado's documentation,他们认为应该设置安全Cookie。
其中的示例设法成功设置安全cookie,但我无法使用get_secure_cookie()
阅读其内容,而get_current_user()
将始终返回None
。
文档无法解释吗?
我正在尝试访问存储在Cookie中的用户名,以便当有人尝试在网络套接字聊天中发送消息时,如果用户未登录则会拒绝该消息。
修改
这是我的课程的样子:
class BaseHandler(tornado.web.RequestHandler):
def get_current_user(self):
return self.get_secure_cookie("user")
class MainHandler(BaseHandler):
def get(self):
if not self.current_user:
self.redirect("/login")
return
name = tornado.escape.xhtml_escape(self.current_user)
self.write("Hello, " + name)
class LoginHandler(BaseHandler):
def post(self):
self.set_secure_cookie("user", self.get_body_argument("username"))
self.redirect("/")
这是websocket代码:
def open(self):
clients.append(self)
print(self)
def on_message(self, message):
print ("message:"+message)
username = self.get_current_user()
print(username)
if not username:
self.write_message('{"author":"[SYSTEM]","message":"You are not logged in."}')
else:
text = "placeholder"
message = '{"author":"'+username+'","message":"'+text+'"}'
for client in clients:
client.write_message(message)
def on_close(self):
clients.remove(self)