在两个Node应用之间共享会话

3
我有一个使用passport-local-mongoose进行身份验证的节点应用程序。我有第二个节点应用程序,它在第一个应用程序的iframe中提供服务。我希望使用第一个应用程序的同一会话保护第二个应用程序中的express路由,以便用户只需登录一次,但第二个应用程序中的express路由仍然受到保护。两个节点应用程序是否有共享会话的方法?或者也许还有其他方法?
谢谢。

3
为什么不将这两个应用程序合并成一个? - robertklep
使用 mount 来组合:https://dev59.com/j2oy5IYBdhLWcg3wfeIR - eenagy
1个回答

1
我能想到的最简单的方法是将会话存储在MongoDB中。然后,您第二个应用程序的中间件可以检查请求中传递的会话与相同的数据库中的会话是否匹配。这种方法的缺点是您必须在两个地方实现一些相同的身份验证逻辑。
也许更好的方法是构建一个专门处理身份验证的第三个微服务。这基本上包装了您的会话存储,并将身份验证逻辑集中在一个地方。其他两个应用程序都将使用此服务。这是我个人仍在学习的领域,而且这个网站很有帮助:https://dejanglozic.com/2014/10/07/sharing-micro-service-authentication-using-nginx-passport-and-redis/

我正在使用express作为我的中间件,目前在两个地方都使用相同的身份验证逻辑是可以接受的。你能否提供一些示例代码?我现在正在尝试使用connect-mongo。 - Jas Ahluwalia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接