【问题标题】:Keeping auth-token between two subdomains在两个子域之间保留 auth-token
【发布时间】:2019-10-17 00:33:15
【问题描述】:

我有一个 Angular 7 网络应用程序,它有两个不同的子域: sub1.myurl.comsub2.myurl.com

它们都有相同的登录端点,并且里面的所有 API 都在寻找身份验证令牌。

您可以在应用内切换“命名空间”,在某些情况下,这会将您从 sub1 域转发到 sub2 域,反之亦然,这也意味着页面刷新。

目前我将身份验证令牌保存在本地存储中。所以在用户从sub1重定向到sub2的场景下,本地存储内容发生变化,auth-token会丢失。

我已经读过 cookie 可以解决这个问题,但再次可能存在安全问题。

我也尝试使用ngx-cookie-service,但找不到添加常规cookie 的方法,该cookie 在没有子域的本地主机以及sub1.myurl.com 和sub2.myurl.com 的生产环境中可用?

【问题讨论】:

  • 你不能因为浏览器决定什么时候发送cookie数据。

标签: angular authentication token single-page-application


【解决方案1】:

其实是我自己想出来的。我会在这里发布我的解决方案,以防有人遇到同样的问题。

   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 参数前面加上一个点 (.),使其也适用于该域的子域。

【讨论】:

  • 我试图让它与 '.localhost' / '.localhost:4200' 一起工作。我运行本地服务器:“ng serve --host localhost --disable-host-check --port 4200 --open”。所以我可以点击我的本地机器sub1.localhost:4200sub2.localhost:4200localhost:4200。如果我尝试从任何子域保存 cookie,则 cookie 将不会保留在 localhost:4200 下(我想要获取的内容)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-17
  • 1970-01-01
  • 2020-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-24
相关资源
最近更新 更多