我有一个Sails应用程序,使用护照的身份验证在单个域应用程序时工作正常(步骤如Passport Doc)。我现在正在尝试将应用程序转换为使用子域名(foo.example.com,bar.example.com),所有这些都指向相同的sails服务器。该会话仅适用于同一个子域,例如,如果用户从foo.example.com登录,则用户可以访问同一子域下的页面...但不能访问bar.example。 COM。当重定向到与经过身份验证的子域不同的子域时,req.isAuthenticated()返回false。
如何确保跨子域的身份验证?任何帮助深表感谢。
我使用的是Sails @ 1.1.0 / passport @ 0.4.0。
开箱即用,Sails使用快速会话用于会话中间件,允许应用程序支持快速会话包中可用的所有相同功能。
为了便于跨多个子域(foo.example.com,bar.example.com)共享同一会话,需要在Sails应用程序的config / session.js文件中配置两个选项。
session: {
cookie: {
domain : '.example.com',
sameSite : false
}
}
值得注意的是,cookie.sameSite是一个尚未完全标准化的属性,并且可能在将来发生变化。这也意味着许多客户可能会忽略此属性,直到他们理解它为止。
这很可能是因为它没有包含在Sails文档here中。可以在here找到更完整的快速会话选项列表。
在这个stackoverflow问题中可以找到管理跨多个子域的会话的另一种方法。