reactjs - 从共享同一父域的多个 Web 应用程序注销
问题描述
我们正在构建一个共享通用身份验证和父域的 Web 应用程序集合/套件。
例子:
- app1.parentdomain.com
- app2.parentdomain.com
- app3.parentdomain.com
- app4.parentdomain.com
我们使用 AWS cognito 作为身份提供者,React 作为前端框架,使用 AWS Amplify,我们通过在父域级别创建 cookie 来共享身份验证,这很好用,但是基于不活动实现注销,我们面临挑战。
假设我们打开了几个带有 app1、app2 和 app3 的浏览器选项卡;用户在 app3 中处于活动状态,而在 app2 和 app1 选项卡上的非活动计时器正在计时,最终 app1/app2 将注销用户,而用户在 app3 中处于活动状态。
我们需要找到一个客户端解决方案来跨子域共享存储。
到目前为止我们评估过的选项
Cookies:在父级域创建另一个cookie,所有应用程序都会限制并更新最后一个活动时间,并每隔x秒轮询一次cookie以检查最后一个活动是否大于应用程序的最后一个活动。cookie 将与所有请求一起发送,轮询似乎是更被动的解决方案。
Window.postmessage:每个愿意与另一个源通信的应用程序必须有一个指向目标源的 iframe 引用,我们需要为所有应用程序中的所有应用程序(减去主机)创建 iframe。
其他选项(仍在评估中):AWS Amplify 中心、网络工作者
在以前的项目中,我已经使用本地存储跨选项卡为同一域实现了注销。如果有人实现了类似的要求并可以提供一些指导/指针,我将不胜感激。
解决方案
推荐阅读
- python-2.7 - 在瓶中的 Web 应用程序中设置应用程序根目录
- python - 保存并打开字典
- mysql - 使用 2 个分组函数从 MySQL 获取平均值
- bash - BASH 脚本 - 子菜单和嵌套案例
- r - 使用 runGdal 下载 MODIS 图像时出错
- android - 如何在我的线性布局底部添加阴影
- ios - 如何在 UICollectionView 上呈现 UIViewController?
- vba - 删除另一个excel或word文件而不通过excel vba关闭它
- bash - 从 URL、HTML 或 JSON 中提取 Confluence 版本
- c# - 如何不在 EntityFramework 核心的根模型中声明键