我正在编写一个GAE应用程序(并使用webapp2框架和jinja2作为模板呈现器),我希望用一个decorator包装我所有的GET和POST方法。装饰程序检查用户是否有权访问此页,如果没有,则应显示一条错误消息
问题是,在decorator内部,我不能使用self.response.write来显示错误消息,因为decorator是一个方法,它不会“扩展”webapp2.RequestHandler
以下是装饰代码:
def checkpriv(classNo, errorMsg):
def wrapFunction(method):
if checkprivileges(classNo):
return method
else:
logging.info(users.get_current_user().nickname() + errorMsg)
# NEED TO DISPLAY ERROR MESSAGE HERE
return wrapFunction
我试图创建一个扩展webapp2.RequestHandler的类,并在decorator中初始化它的一个对象,但是我发现这个错误404 get方法是不允许的
为什么不创建一个重写webapp2 init或dispatch的BaseHandler呢。这样你就不需要(或忘记)装饰师了
文档init override和dispach override
我使用dispatch override创建基于角色的访问控制
相关问题 更多 >
编程相关推荐