Python 什么';在Tornado中,为某些处理程序编写登录所需的装饰程序是一种很好的方法吗?

Python 什么';在Tornado中,为某些处理程序编写登录所需的装饰程序是一种很好的方法吗?,python,decorator,tornado,Python,Decorator,Tornado,我有一些网页,我想让人们登录查看。我正在使用Facebook connect登录,并在Tornado服务器上运行该网站 现在,我这样做: class Home(BaseHandler): def get(self): if not self.current_user: self.redirect("/") else: context = dict(current_user=self.current_user, facebook_app_id=FAC

我有一些网页,我想让人们登录查看。我正在使用Facebook connect登录,并在Tornado服务器上运行该网站

现在,我这样做:

class Home(BaseHandler):
def get(self):
    if not self.current_user:
        self.redirect("/")
    else:
        context = dict(current_user=self.current_user, facebook_app_id=FACEBOOK_APP_ID)
        self.render("basic/home.html", **context)
其中BaseHandler是一个修改过的处理程序,它包含一个方法self.current\u user,如果没有人登录,则返回user对象或None


我想知道最好的方法是将它重写为一个decorator,我可以将它放在我想要锁定的每个处理程序上?

听起来你好像还没有找到经过身份验证的decorator

@tornado.web.authenticated
def get(self):
    ...
如果您没有当前用户,它会将您重定向到
登录\u url
应用程序设置