Какой хороший способ написать декоратор для входа в систему для определенных обработчиков в Торнадо? - PullRequest
1 голос
/ 20 ноября 2011

У меня есть несколько веб-страниц, которые я хочу, чтобы люди вошли в систему, чтобы увидеть. Я использую 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_user, который возвращает либо пользовательский объект, либо None, если никто не вошел в систему.

Мне было интересно, как лучше переписать это как декоратор, который я мог бы разместить на каждом обработчике, который я хочу заблокировать?

1 Ответ

2 голосов
/ 21 ноября 2011

Похоже, вы не нашли аутентифицированного декоратора

@tornado.web.authenticated
def get(self):
    ...

Если у вас нет current_user, он перенаправит вас к настройке приложения login_url.

...