在多租户应用程序中使用Passport.js的OAuth
我正在开发一个允许多个租户使用子域名的网站。
帐户将能够添加自己的子域,只要它们尚不存在;例如:
我还使用passport.js添加了使用许多oauth提供商(谷歌,微软,天蓝广告等)登录的能力。
所有这些服务都将回调到主域(mywebsite/login/google/callback),我需要识别登录请求的子域以重定向用户。
由于单个用户可以拥有多个子域,因此我无法轻松地将其存储在其用户记录中。
我现在遇到了一个问题,我无法找到一种方法来保持租户信息超过护照验证阶段。
我尝试使用会话变量,但会话在回调阶段重置,并丢失我存储在那里的任何信息。
我确实考虑过将子域添加为针对每个服务的允许回调URL,然后将回调设置为子域,但这很快变得无法管理。
有没有办法让passport.js保持现有会话变量不变或使用其他方法来传输租户信息?
回答如下:这不是一个完整的答案,但有一种设计模式可以在移动到登录页面时将&redirect=/url-after-login
保留为URL查询参数。成功登录后,登录处理程序然后重定向回此URL。可以基于用户或始发页面来选择URL。
这可以在你的情况下工作吗?显然,这需要一些关于如何在passport.js中实现它的研究。对不起,我无法提供工作代码。