Angularjs - 使用 $window.open 重定向发送授权 header
Angularjs - Send authorization header in redirection with $window.open
如标题中所述,我想执行从 localhost:port1
中的 angularJs 应用程序重定向到 localhost:port2
中的另一个 angularJs 应用程序。
这两个应用程序使用 openid-connect
服务器和 this angualrjs 指令进行保护。
问题是当我登录第一个应用程序并重定向到第二个应用程序时,它告诉我 re-sign 就好像我没有通过身份验证一样。
所以我想出了一个解决这个问题的方法:我在重定向 url 中发送了 access_token 并在第二个应用程序中使用它..
但我读到在 URL ..
中公开 access_token 是一种不好的做法
所以我的问题是有没有一种方法可以使用 $window.open(url) 发送授权 header 和重定向 .. ?
提前致谢。
不,您不能设置 header,因为您收到的 header 来自 back-end。您只需要求浏览器更改 url。而且您不想将 access_token 放在 url 中(明智的做法)。
我想到的解决办法是把access_token写在session-storage里。它是安全的,因为它只能由当前选项卡访问。第二个 angularjs 应用程序可以检查 start-up 上的 session-storage 并在存在时使用它。
更新:Session 存储是特定于端口的,因此在这种情况下不起作用:
第二种解决方案是使用 cookie,与 sessionStorages 不同,cookie are not port specific。因此,当第二个 angularjs 应用程序出现时,它可以检查 cookie 以查看身份验证令牌是否存在,如果存在则不会转到 sign-in 页面。
如标题中所述,我想执行从 localhost:port1
中的 angularJs 应用程序重定向到 localhost:port2
中的另一个 angularJs 应用程序。
这两个应用程序使用 openid-connect
服务器和 this angualrjs 指令进行保护。
问题是当我登录第一个应用程序并重定向到第二个应用程序时,它告诉我 re-sign 就好像我没有通过身份验证一样。
所以我想出了一个解决这个问题的方法:我在重定向 url 中发送了 access_token 并在第二个应用程序中使用它..
但我读到在 URL ..
中公开 access_token 是一种不好的做法所以我的问题是有没有一种方法可以使用 $window.open(url) 发送授权 header 和重定向 .. ?
提前致谢。
不,您不能设置 header,因为您收到的 header 来自 back-end。您只需要求浏览器更改 url。而且您不想将 access_token 放在 url 中(明智的做法)。
我想到的解决办法是把access_token写在session-storage里。它是安全的,因为它只能由当前选项卡访问。第二个 angularjs 应用程序可以检查 start-up 上的 session-storage 并在存在时使用它。
更新:Session 存储是特定于端口的,因此在这种情况下不起作用:
第二种解决方案是使用 cookie,与 sessionStorages 不同,cookie are not port specific。因此,当第二个 angularjs 应用程序出现时,它可以检查 cookie 以查看身份验证令牌是否存在,如果存在则不会转到 sign-in 页面。