在风帆中的子域之间共享登录

时间:2017-01-10 14:46:08

标签: sails.js single-sign-on

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

3 个答案:

答案 0 :(得分:0)

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

  

关于扩展服务器端最重要的事情   应用是它应该是无国籍的。这意味着你应该   能够将相同的代码部署到n个不同的服务器,期待任何服务器   给定任何给定服务器处理的传入请求,以及所有内容   应该仍然有效。幸运的是,Sails应用程序已经为此类做好了准备   部署几乎开箱即用。但在部署您的应用之前   对于多个服务器,您需要做一些事情:

     

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

对我来说有用的是确保我们为所有网络应用程序提供相同的密钥。可以在config中配置密钥 - > session.js。