Sails.js 在sails中的子域之间与共享登录

Sails.js 在sails中的子域之间与共享登录,sails.js,single-sign-on,Sails.js,Single Sign On,我在两个独立的子域中有两个应用程序,如:app1.example.com和app2.example.com,数据库彼此共享,会话存储在数据库中,问题是 如果用户登录到第一个应用程序,然后他切换到第二个应用程序,我如何让他登录? 我正在使用sails.js和redis来存储会话这几乎就像缩放一样 为群集部署准备应用程序 关于扩展服务器端,要记住的最重要的一点 应用程序要求它应该是无状态的。那意味着你应该 能够将相同的代码部署到n个不同的服务器,需要 由任何给定服务器处理的给定传入请求,以及所有 应

我在两个独立的子域中有两个应用程序,如:app1.example.com和app2.example.com,数据库彼此共享,会话存储在数据库中,问题是 如果用户登录到第一个应用程序,然后他切换到第二个应用程序,我如何让他登录?
我正在使用sails.js和redis来存储会话

这几乎就像缩放一样 为群集部署准备应用程序

关于扩展服务器端,要记住的最重要的一点 应用程序要求它应该是无状态的。那意味着你应该 能够将相同的代码部署到n个不同的服务器,需要 由任何给定服务器处理的给定传入请求,以及所有 应该还能用。幸运的是,Sails应用程序已经为这种情况做好了准备 部署几乎是开箱即用。但在部署应用程序之前 对于多台服务器,您需要做几件事:

确保应用程序中没有其他依赖项 依靠共享内存。确保您的模型的数据库,例如。 MySQL、Postgres、Mongo是可扩展的,例如,如果您的 应用程序使用会话:将应用程序配置为使用共享会话存储 例如,Redis只是在中取消对适配器选项的注释 配置/session.js并将connect redis适配器作为 应用程序的依赖性,例如npm安装connect redis@~3.0.2-保存 -准确地保存。如果您的应用程序使用套接字:将您的应用程序配置为将Redis用作传递socket.io消息的共享消息队列 取消对config/sockets.js中适配器选项的注释安装 socket.io-redis适配器作为应用程序的依赖项,例如npm安装 socket.io redis@~1.0.0-save-save-exact如果群集位于 例如,单服务器,使用pm2群集模式避免文件丢失 由于繁重的任务而导致的冲突问题,请始终在中启动应用程序 生产环境,和/或考虑完全关闭咕噜声。 有关单服务器集群中Grunt问题的更多详细信息,请参见此处 小心使用config/bootstrap.js代码将数据持久化到 数据库,以避免引导程序多次运行时发生冲突 群集中每个节点一次


最后,在两个应用程序的cookie中添加域后,它就可以工作了, 文件config/session.js中的更改

cookie : {
   domain: ".example.com"
}

对我有效的是确保我们所有的网络应用都有相同的密钥。秘钥可以在config->session.js中配置。

谢谢您的回答,但我不是在问缩放问题,我只是想知道如何在多个应用程序上应用单点登录,这些应用程序具有相同的数据库,并且会话存储在redis上,redis也在它们之间共享。我告诉过您,您必须执行与缩放相同的操作。使用同一数据库的两个不同应用程序几乎等同于缩放同一应用程序。不同之处在于,您必须在这两个服务器上都启用REDIS中的会话存储,它将工作。我已经启用了它,在这两个服务器上的Cookie中设置父域后,它现在工作