Аутентификация пользователя в приложении торнадо - PullRequest
9 голосов
/ 07 декабря 2011

Теперь я совершенствую свои навыки работы с торнадо и задаю вопрос об аутентификации пользователя.

И мое решение - создать безопасный токен на первой странице и затем отправить его с другими данными, от javascript до сервера торнадо, где выполняется проверкаи авторизированный пользователь.

Я думаю о куки, но я не знаю, как я могу читать куки в WebSocketHandler.on_message

что вы думаете?а где я не прав?Спасибо

Ответы [ 2 ]

11 голосов
/ 07 декабря 2011

Я предлагаю вам прочитать обзорный раздел в документации.

Там должно быть какое-то соответствующее содержание:

РЕДАКТИРОВАТЬ

Я только что понял, что ваш вопрос о паутинах.Я полагаю, что вы можете использовать подход, который вы обрисовали в общих чертах:

  • Создание файла cookie в не-сокетной части вашего приложения
  • Проверка cookie в обработчике веб-сокета

Вы должны иметь доступ к заголовкам запросов внутри обработчика websocket, используя self.request.headers.

6 голосов
/ 11 марта 2013

Клиент, вероятно, может сделать заголовки запроса с фальшивым пользователем: 'Пользователь = "ImFkbWxxxx == | XXXXXXXXXX | 9d847f58a6897df8912f011f0a784xxxxxxxxxx"'

Я думаю, что следующий подход лучше. Если пользователь не существует или если идентификатор cookie неверен или фальсифицирован, функция get_secure_cookie не вернет пользователя

class WebSocketHandler(tornado.websocket.WebSocketHandler):

    def open(self):
        user_id = self.get_secure_cookie("user")
        if not user_id: return None
        ...
...