Какъв е двойникът на Tornado на ctx модула на Web.py?

Бих искал да науча как да използвам нещо като ctx модула на web.py в торнадо.

Благодаря!


Редактиране: Опитвам се да запазя идентификационните данни на потребителя в глобален контекст като с модула ctx. Знам, че такава информация може да бъде предавана с всяка заявка, но в такъв случай ще трябва да предавам тази информация на манипулатори всеки път? Чудя се какъв е правилният начин да се постигне това?


person Hypnos    schedule 03.06.2014    source източник


Отговори (1)


Можете да получите повечето от информацията, съдържаща се в ctx от RequestHandler.request обект, който е 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 е проектиран да бъде без гражданство, така че това нарочно не се прилага.

Имайте предвид, че tornado предоставя някои полезни методи за справяне с удостоверяването. Единият е декоратор, наречен tornado.web.authenticated, който можете използвайте, за да украсите всеки метод, за който искате потребителят да бъде удостоверен за достъп. Трябва също така да внедрите get_current_user, което използва декораторът authenticated, за да определи дали потребителят е удостоверен, и get_login_url, който трябва да върне URL адреса, към който потребителят трябва да бъде пренасочен, ако не е влязъл (обикновено това трябва да е вашата страница за вход). Когато потребител влезе, можете да използвате set_secure_cookie, за да съхранят сесията си в защитена бисквитка и след това да извикат get_secure_cookie в get_current_user, за да потвърдите сесията по-късно.

Вижте този въпрос за по-обща информация относно обработката на сесии с Tornado: стандартен начин за обработка на потребителска сесия в tornado

person dano    schedule 03.06.2014
comment
Благодаря! Исках да запазя идентификационните данни на потребителя в глобалната среда, така че в този случай трябва да предам идентификационни данни с всяко отделно извикване на функция? Чудя се какъв е правилният начин за това? - person Hypnos; 04.06.2014