假设我的GAE项目中有很少的模块(比如A,B,C)。他们共享用户数据库和会话。
例如:模块A将管理登录/注销操作(通过cookie),模块B,C将处理其他操作。仅供参考,这些模块是用PHP和Python开发的。
现在,我不想让用户&所有3个模块上的会话验证码。
无论如何,我是否要为每个请求放置一个在所有3个模块之前运行的中间件。例如X:如果用户已登录,它将为每个请求添加标头以设置用户ID和一些用户信息。
I.E:在我能实现上述想法之后。每个请求将在以下3种情况下运行1:
你怎么说? 感谢
中间件,我的意思是请求中间件。
如果X是中间件,那么它将在请求传递给应用程序(或模块)之前运行,它将仅更改请求,如:
X-User-Id
:授权用户ID X-User-Scopes
:适用于授权用户的范围当然,它独立于内部模块的语言(PHP或Python或Java或......)
应该在app.yaml
配置X中间件。
答案 0 :(得分:0)
我接近这种情况的方式(在一个只有python的项目中,不知道关于php)是使用自定义处理程序(继承我已经用于会话支持的webapp2.RequestHandler)。在其自定义的dispatch()方法中,用户信息被收集并存储在处理程序对象本身中。
处理程序的实现仅存在于一个版本控制文件中,但在引用处理程序的每个模块中都是符号链接(用于GAE可访问性)。这样我就不必管理用户和会话验证码的多个独立副本。