Google app engine 模块的GAE中间件?

Google app engine 模块的GAE中间件?,google-app-engine,middleware,google-app-engine-python,Google App Engine,Middleware,Google App Engine Python,假设我的GAE项目上只有几个模块(比如A、B、C)。它们共享用户数据库和会话 例如:模块A将管理登录/注销操作(通过cookie),模块B、C将处理其他操作。仅供参考,这些模块是用PHP和Python开发的 现在,我不想在所有3个模块上都生成用户和会话验证代码 我是否需要为每个请求在所有3个模块之前运行一个中间件。例如X:如果用户已登录,它将为每个请求添加头,以设置用户id和一些用户信息 在我能实现我的上述想法之后。在以下3种情况下,每个请求将运行到1: 十、 A 十、 B 十、 C 你怎么

假设我的GAE项目上只有几个模块(比如A、B、C)。它们共享用户数据库和会话

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

现在,我不想在所有3个模块上都生成用户和会话验证代码

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

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

  • 十、 A
  • 十、 B
  • 十、 C
你怎么说? 谢谢

更新1:更多信息 中间件,我指的是请求中间件

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

  • 执行一些身份验证操作
  • 添加一些标题:
    • X-User-Id
      :用于授权用户Id
    • X-User-Scopes
      :用于授权用户的范围
  • 等等
当然,它独立于内部模块的语言(PHP或Python或Java或…)


X中间件应该在
app.yaml

上配置,我处理这种场景的方式(在一个纯python项目中,donno关于php)是使用自定义处理程序(继承我已经用于会话支持的webapp2.RequestHandler)。在其定制的dispatch()方法中,用户信息被收集并存储在处理程序对象本身中


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

为什么不另一个模块?假设X是另一个模块,我如何将请求传递到A、B或C模块旁边?哦,如果项目仅限于python,我们可以通过构建一个wsgi应用程序来使用您的解决方案,将请求传递给内部的一些wsgi应用程序。我的问题是,我目前的代码库是用PHP编写的,我正在将一些部分移到python中。对,您可能需要每种语言的主副本,符号链接到相应的语言模块中以共享代码。现在您提到了中间件方法,但您仍然需要为每种语言使用一个中间件,因为每个模块都执行到运行相应语言沙盒的应用程序引擎实例中。很抱歉,回复太晚。我对我的问题进行了编辑,以提供有关我想法的更多细节。我正在寻找一种在app.yaml上配置该中间件的方法,因此该中间件将在每个实例上运行,独立于实例的语言。我认为这是不可能的:app.yaml文件并非100%独立于模块的语言沙盒,这就是为什么它有不同的语言特定指南的原因(例如java one甚至不使用app.yaml文件)。此外,除了静态地或通过各自语言实现的应用程序脚本之外,我在任何指南中都没有看到处理路由的方法。