0

我是 Tornado.web 的新手。

我只是用龙卷风在python中编写了一个网络服务。他被桌面应用程序占用。我想要求应用程序仅在经过身份验证后进行通信。

我搜索了示例,但找不到适用于我的案例的示例。

4

1 回答 1

1

您只需添加@tornado.web.authenticated装饰器,并在您的应用程序login url中指定您指定的debug=True

settings = dict({
    "template_path": os.path.join(os.path.dirname(__file__),"templates"),
    "static_path": os.path.join(os.path.dirname(__file__),"static"),
    "cookie_secret": "make it harde to guess ;) ",
    "xsrf_cookies": True,
    "debug": False,
    "gzip": True,
    "login_url": "/#login",
    "site_url":"http://localhost:8000",
})

最后,您从控制 cookie 存在的类继承您的类:

class BaseHandler(tornado.web.RequestHandler):
    @tornado.web.removeslash
    def get_current_user(self):
         return self.get_secure_cookie("name_of_your_cookie")

例子:

class Test(BaseHandler):
    @tornado.web.authenticated
    def post(self):
        user = self.get_secure_cookie("name_of_your_cookie")
        # the rest of the code...

现在会发生什么,每次有人尝试进入将使用的链接时Test,应用程序都会查看是否cookie存在,否则,它将被重定向login_url

于 2013-05-04T12:21:44.680 回答