模块的GAE中间件?

时间:2015-07-13 08:08:37

标签: google-app-engine middleware google-app-engine-python

假设我的GAE项目中有很少的模块(比如A,B,C)。他们共享用户数据库和会话。

例如:模块A将管理登录/注销操作(通过cookie),模块B,C将处理其他操作。仅供参考,这些模块是用PHP和Python开发的。

现在,我不想让用户&所有3个模块上的会话验证码。

无论如何,我是否要为每个请求放置一个在所有3个模块之前运行的中间件。例如X:如果用户已登录,它将为每个请求添加标头以设置用户ID和一些用户信息。

I.E:在我能实现上述想法之后。每个请求将在以下3种情况下运行1:

  • X,A
  • X,B
  • X,C

你怎么说? 感谢

更新1:更多信息

中间件,我的意思是请求中间件。

如果X是中间件,那么它将在请求传递给应用程序(或模块)之前运行,它将仅更改请求,如:

  • 执行一些身份验证操作
  • 添加一些标题:
    • X-User-Id:授权用户ID
    • X-User-Scopes:适用于授权用户的范围
  • 等...

当然,它独立于内部模块的语言(PHP或Python或Java或......)

应该在app.yaml配置X中间件。

1 个答案:

答案 0 :(得分:0)

我接近这种情况的方式(在一个只有python的项目中,不知道关于php)是使用自定义处理程序(继承我已经用于会话支持的webapp2.RequestHandler)。在其自定义的dispatch()方法中,用户信息被收集并存储在处理程序对象本身中。

处理程序的实现仅存在于一个版本控制文件中,但在引用处理程序的每个模块中都是符号链接(用于GAE可访问性)。这样我就不必管理用户和会话验证码的多个独立副本。