如何使用webapp.RequestHandler链处理请求

时间:2010-05-04 11:51:37

标签: google-app-engine authentication web-applications

GAE webapp允许将单个处理程序映射到路径:

application = webapp.WSGIApplication([
                                     ('/login', gae_handlers.UserLogin),
                                     ], debug=True)

我有什么方法可以拥有一系列请求处理程序吗?

我想拥有在所有其他处理程序运行之前进行身份验证的处理程序。

2 个答案:

答案 0 :(得分:5)

您可以使用装饰器或WSGI中间件来执行此操作。

this answer中有一个使用装饰器的好例子。 Nick Johnson的AEoid项目使用中间件方法。

答案 1 :(得分:0)

我找到了另一种方式

class ExtendedRequest(google.appengine.ext.webapp.WSGIApplication.REQUEST_CLASS):
    # I can basically do anything here
    def get_session_id(self):
        return self.cookies.get('session_id')

google.appengine.ext.webapp.WSGIApplication.REQUEST_CLASS = ExtendedRequest