使用 vhost 时,Sails 中的 Passport 身份验证无法跨子域工作
Passport authentication in Sails is not working across subdomains when using vhost
我有一个 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 使用 express-session 作为会话中间件,允许应用程序支持 express-session 包中可用的所有相同功能。
为了便于跨多个子域(foo.example.com、bar.example.com)共享同一会话,需要在 Sails 应用的 config/session.js 文件中配置两个选项。
session: {
cookie: {
domain : '.example.com',
sameSite : false
}
}
- cookie.domain :这指定了 Domain Set-Cookie 属性的值。默认情况下,没有设置域,大多数客户端会认为 cookie 仅适用于当前域。
- cookie.sameSite :指定布尔值或字符串作为 SameSite Set-Cookie 属性的值。
- true 将 SameSite 属性设置为 Strict 严格相同的站点
执法。
- false 将不设置 SameSite 属性。
值得注意的是,cookie.sameSite是一个尚未完全标准化的属性,将来可能会发生变化。这也意味着许多客户在理解之前可能会忽略此属性。
很可能由于这个原因,它没有包含在 Sails 文档中 here. A more complete list of available options for express-session can be found here。
在这个 Whosebug 问题中可以找到另一种管理跨多个子域的会话的方法。
我有一个 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 使用 express-session 作为会话中间件,允许应用程序支持 express-session 包中可用的所有相同功能。
为了便于跨多个子域(foo.example.com、bar.example.com)共享同一会话,需要在 Sails 应用的 config/session.js 文件中配置两个选项。
session: {
cookie: {
domain : '.example.com',
sameSite : false
}
}
- cookie.domain :这指定了 Domain Set-Cookie 属性的值。默认情况下,没有设置域,大多数客户端会认为 cookie 仅适用于当前域。
- cookie.sameSite :指定布尔值或字符串作为 SameSite Set-Cookie 属性的值。
- true 将 SameSite 属性设置为 Strict 严格相同的站点 执法。
- false 将不设置 SameSite 属性。
值得注意的是,cookie.sameSite是一个尚未完全标准化的属性,将来可能会发生变化。这也意味着许多客户在理解之前可能会忽略此属性。
很可能由于这个原因,它没有包含在 Sails 文档中 here. A more complete list of available options for express-session can be found here。
在这个 Whosebug 问题中可以找到另一种管理跨多个子域的会话的方法。