【问题标题】:How to share data between 2 angularjs apps?如何在 2 个 angularjs 应用程序之间共享数据?
【发布时间】:2016-05-27 11:46:03
【问题描述】:

我有 2 个 Angular 应用程序连接到同一个后端。

  1. account.myweb.com 用于登录、注册和管理账户
  2. app.myweb.com 是真正的应用程序。

在 account.myweb.com 成功登录后,用户将获得访问令牌和用户详细信息,并将被重定向到 app.myweb.com。 app.myweb.com 需要此访问令牌。如何在 2 个应用程序之间共享数据?

【问题讨论】:

    标签: javascript angularjs asp.net-web-api


    【解决方案1】:

    您可以使用 $cookies:https://docs.angularjs.org/api/ngCookies/service/$cookies

    或者,我们使用angular-local-storage。它运作良好。 https://github.com/grevory/angular-local-storage

    【讨论】:

    • 我尝试使用 angular-local-storage 但 html5 本地存储无法与其他域共享数据。
    • hmmm,使用一个简单的查询字符串怎么样? http://app.myweb.com/?token=xxxxxxxxx 然后,只要 Angular 读取令牌,您就可以让它自动将其从 URL 中删除并放入自己的本地存储中。
    • 肯定是带有token的查询参数。
    【解决方案2】:

    看来我们可以欺骗本地存储以允许跨域使用 iframe 和 postmessage。它有角度模块。 https://github.com/ofirdagan/cross-domain-local-storage.

    【讨论】:

      【解决方案3】:

      Cookies 可以在子域之间共享。在您的情况下,您可以在 2 个应用程序之间共享相同的令牌。成功登录商店令牌后,如下所示

      $cookies.put('tokenName', 'tockenValue', { domain: '.myweb.com' });
      

      那么您可以在两个应用程序中访问此令牌。

      注意 - 如果您的应用程序使用低于 1.3 的 Angular 版本运行,则无法将 cookie 设置为特定域。因此你必须使用

       $document[0].cookie = "tokenName"+ "=" + "tockenValue"+ ";domain=.myweb.com";
      

      【讨论】:

        猜你喜欢
        • 2017-06-01
        • 1970-01-01
        • 2011-10-26
        • 1970-01-01
        • 2018-11-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多