有一些子类继承ManageHandler
,每个子类都需要进行私有检查。
因此,我编写private_auth
,让它在__init__
中执行私有检查,并在GET/POST方法之前调用它。在
如果私密检查失败,只返回404错误。然而,这并不奏效。那么如何停止请求并返回错误页面呢?在
我的代码发布在下面:
class ManageHandler(BaseHandler):
def __init__(self, *argc, **argkw):
super(ManageHandler, self).__init__(*argc, **argkw)
self.private_auth()
def private_auth(self):
self.user = self.get_secure_cookie("user")
self.private = self.UserModel.get_user_level_by_name(self.user)
#not login
if self.private == -1:
return
if self.private != 4:
self.render("404.html")
self.finish()
@tornado.web.authenticated
def get(self, argkw={}):
pass
龙卷风报告这个错误。在
^{pr2}$
Tornado不是为在
RequestHandler.__init__
中执行身份验证和其他操作而设计的。这就是为什么从__init__
调用self.finish
时会出现异常:请求处理程序尚未准备好运行finish
。在相反,请重写
get_current_user()
。基本说明如下:http://tornado.readthedocs.org/en/latest/web.html#tornado.web.RequestHandler.get_current_user
这里有一个例子:
http://technobeans.wordpress.com/2012/08/14/tornado-authentication/
在},只需返回一个元组。像这样:
get_current_user()
中,不要设置self.user
和{龙卷风会处理剩下的。在您的
get()
方法中,当前的(user, private)
元组将设置在self.current_user
中。在相关问题 更多 >
编程相关推荐