我有一个带有两个不同子域的Angular 7 Web应用程序: sub1.myurl.com 和 sub2.myurl.com
它们都具有相同的登录端点,并且内部的所有API都在寻找身份验证令牌。
您可以在应用程序内切换一个'命名空间',在某些情况下,它会将您从 sub1 转发到 sub2 域,反之亦然,这也意味着页面刷新。
当前,我将身份验证令牌保存在本地存储中。因此,在用户从 sub1 重定向到 sub2 的情况下,本地存储内容会更改,并且身份验证令牌也会丢失。
我已经读过cookie是解决此问题的方法,但再次可能会出现安全问题。
我也尝试使用ngx-cookie-service,但找不到添加通用cookie的方法,该cookie在没有子域的localhost中以及在sub1.myurl.com和sub2.myurl的生产环境中都可用。 com?
答案 0 :(得分:0)
实际上是我自己弄清楚的。如果有人遇到同样的问题,我将在此处发布我的解决方案。
const loc = window.location;
if (loc.hostname === 'sub1.myurl.com' || loc.hostname === 'sub2.myurl.com') {
this.cookieService.set('token', session, null, '/', '.myurl.com', true);
} else {
this.cookieService.set('token', session);
}
因此,基于 window.location.hostname 我设置了不同的cookie。对于必须在子域之间共享Cookie的生产环境,如果在 domain 参数的前面加一个点(。),则它也适用于该域的子域。