Я искал Tornado's documentation, и они говорят, что должны быть установлены безопасные файлы cookie.Как настроить безопасный файл cookie, а затем прочитать его содержимое?
Примером этого является успешное установление безопасного файла cookie, но я не могу его прочитать, используя get_secure_cookie()
и get_current_user()
всегда будет возвращать None
.
Есть ли что-то, что документация не может объяснить? .
Я пытаюсь получить доступ к имени пользователя, хранящийся в куки, так что, когда кто-то пытается отправить сообщение в веб-розеткой чат он отклоняет сообщение, если пользователь не вошел в систему
EDIT:
Это как мои классы выглядят:
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)
Мой BaseHandler класс имеет следующий код: 'класса BaseHandler (смерч .web.RequestHandler): def get_current_user (self): return self.get_secure_cookie («пользователь») 'Это то, что вы имеете в виду или вы говорите aobut что-то еще? – Aeder
Итак, следующий шаг, можете ли вы прочитать обычное значение cookie cookie с handler.get_cookie ('user')? Если вы можете - ваша проблема с функцией decode_signed_value: https://github.com/tornadoweb/tornado/blob/master/tornado/web.py#L640 –
Обычные файлы cookie устанавливаются нормально, но они представляют ту же проблему, I не могут получить доступ к их контенту. Я также не могу получить доступ к содержимому подписанных файлов cookie с обычным 'get_cookie()' – Aeder