あなたのユースケースは、これは完全にあなたのハンドラでセキュアなアクセスを持ついずれかの方法で@tornado.web.authenticated
デコレータを使用して竜巻に処理されたユーザ認証である場合。 これは私が応じtornado documentation
から取られている下の抜粋を参照してくださいあなたはより多くの情報と作業コードの場合(あなたの例では、あなたのParentClassだろう)基底クラス
に実装することができますハンドラのget_current_user
メソッドを呼び出します。
ユーザ認証
は、現在認証されたユーザはself.current_userとして、およびCURRENT_USERなど、すべてのテンプレート内のすべての要求ハンドラ で利用可能です。 デフォルトでは、current_userはNoneです。
アプリケーションでユーザー認証を実装するには、 リクエストハンドラのget_current_user()メソッドをオーバーライドして、 に、たとえば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 get(self):
self.write('<html><body><form action="/login" method="post">'
'Name: <input type="text" name="name">'
'<input type="submit" value="Sign in">'
'</form></body></html>')
def post(self):
self.set_secure_cookie("user", self.get_argument("name"))
self.redirect("/")
application = tornado.web.Application([
(r"/", MainHandler),
(r"/login", LoginHandler),
], cookie_secret="__TODO:_GENERATE_YOUR_OWN_RANDOM_VALUE_HERE__")
あなたはユーザーは、Pythonを使用してログインする必要ができます:ここで は、ユーザーがその後、クッキーに保存されているニックネームを指定する するだけでアプリケーションにログインすることができます例です。デコレータ はtornado.web.authenticated。要求がこの デコレータとメソッドとなり、ユーザーがログインしていない場合、彼らは LOGIN_URL(他のアプリケーションの設定)にリダイレクトされます。
class MainHandler(BaseHandler):
@tornado.web.authenticated
def get(self):
name = tornado.escape.xhtml_escape(self.current_user)
self.write("Hello, " + name)
settings = {
"cookie_secret": "__TODO:_GENERATE_YOUR_OWN_RANDOM_VALUE_HERE__",
"login_url": "/login",
}
application = tornado.web.Application([
(r"/", MainHandler),
(r"/login", LoginHandler),
], **settings)
:上記の例では 書き直すことができ