0

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

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

现在,我不想在所有 3 个模块上制作用户和会话验证码。

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

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

  • X,一个
  • X,乙
  • X, C

你说什么?谢谢

更新 1:更多信息

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

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

  • 做一些认证动作
  • 添加一些标题:
    • X-User-Id: 用于授权用户 id
    • X-User-Scopes: 授权用户范围
  • ETC ...

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

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

4

1 回答 1

0

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

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

于 2015-07-14T04:17:11.663 回答