如何在2个angularjs应用程序之间共享数据?

问题描述:

我有2个角度应用程序连接到相同的后端。如何在2个angularjs应用程序之间共享数据?

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

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

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

你可以使用$饼干:https://docs.angularjs.org/api/ngCookies/service/ $饼干

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

+0

我试图使用角度本地存储但html5本地存储不能与其他域共享数据。 – Reynaldi

+1

嗯,如何使用简单的查询字符串? 'http://app.myweb.com/?token = xxxxxxxxx' 然后只要角度读取令牌,就可以让它自动从URL中移除它并将其放入其自己的本地存储中。 – HankScorpio

+0

绝对是带有令牌的查询参数。 – Darryl

Cookie可以在子域之间共享。在你的情况下,你可以在你的2个应用程序之间共享相同的令牌后成功登录商店令牌像下面

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

,那么你可以访问此令牌两种应用。

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

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