【问题标题】:Angularjs - Send authorization header in redirection with $window.openAngularjs - 使用 $window.open 在重定向中发送授权标头
【发布时间】:2018-02-20 17:44:49
【问题描述】:

正如标题中提到的,我想从位于localhost:port1 的 angularJs 应用程序重定向到位于localhost:port2 的另一个 angularJs 应用程序。
这两个应用程序使用openid-connect 服务器和this angualrjs 指令进行保护。

问题是当我登录第一个应用程序并执行重定向到第二个应用程序时,它告诉我重新登录,就好像我没有经过身份验证一样。

所以我想出了一个解决这个问题的方法:我在重定向 url 中发送了 access_token 并在第二个应用程序中使用它..

但我读到在 URL 中公开 access_token 是一种不好的做法..

所以我的问题是有没有办法使用 $window.open(url) .. 发送带有重定向的授权标头?

先谢谢了。

【问题讨论】:

    标签: angularjs authentication openid


    【解决方案1】:

    不,您不能设置标头,因为您收到的标头来自后端。您只需要求浏览器更改 url。而且您不想将 access_token 放在 url 中(明智的操作)。

    我想到的解决方案是将access_token写在session-storage中。它是安全的,因为它只能由当前选项卡访问。第二个 angularjs 应用程序可以在启动时检查会话存储,如果存在就使用它。

    更新:会话存储是特定于端口的,因此在这种情况下不起作用:

    第二种解决方案是使用 cookie,与 sessionStorages 不同,cookie are not port specific。因此,当第二个 angularjs 应用程序出现时,它可以检查 cookie 以查看身份验证令牌是否存在,如果存在则不会转到登录页面。

    【讨论】:

    • 感谢您的快速回答!我完全同意你所说的,但就我而言,我正在执行重定向到位于不同端口的应用程序。因此,即使重定向发生在同一个选项卡上,两个应用程序不共享会话存储,每个主机和端口也是唯一的
    • 是的,我正在寻找的解决方案。谢谢!
    猜你喜欢
    • 2016-10-18
    • 2017-06-24
    • 2015-08-13
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 2012-04-24
    • 2017-10-29
    相关资源
    最近更新 更多