首页 > 解决方案 > 如何在两个 Angular 2 应用程序之间共享会话数据

问题描述

我有两个角度应用 App1 和 App2。我想将 App1 会话数据共享给 App2。参考,就像谷歌一样,我们可以通过一次登录访问所有谷歌应用程序。

标签: angularsessioncookiessession-management

解决方案


这就是一般的逻辑:

当用户登录时,BE 会为该登录分配一个临时令牌。

如果仪表板和 app1 BE 不同,则 db-be 将活动令牌传递给 app1-be

或者更好的是,会有一个集中的 BE 来生成会话令牌(参见https://www.keycloak.org/和身份管理软件),每个 BE 都参与搜索活动令牌。

当用户单击 app1 仪表板按钮时,BE 会将他重定向到类似http://[app1]?token=[hash1234]的内容,其中 token 是用户的登录令牌值。

用户的 app1 前端启动,读取令牌并将其保存在本地存储中。

当 app1 通过 rest 调用 BE 时,通常使用角度拦截器,每个调用都使用标头值进行签名,例如{authentication: bearer [token value]},其中承载令牌是承载已登录的令牌。

BE 验证令牌是否已经有效(很可能通过对身份服务器的调用),如果有效,则授予对被调用资源的访问权限。

请参阅 JWT 身份验证和 SSO 登录。


推荐阅读