如何在浏览器中跨页面保留 Cognito 身份

2023-12-31

我使用开发人员经过身份验证的身份通过客户端浏览器上的 Cognito 进行身份验证。当我的页面加载(或刷新)时,我希望我的应用程序能够记住身份,只要对象没有过期(我认为它会持续大约一个小时)。但是,我不知道如何从 Cognito 检索身份,而无需再次进行开发人员身份验证。

以下是代码在页面加载时执行的操作:

var cognitoCredentials

$(document).ready(function() { 
    "use strict";

    cognitoParams = {
      IdentityPoolId: 'us-east-1:xxxxxxx'
    };

    cognitoCredentials = new AWS.CognitoIdentityCredentials(cognitoParams);
    AWS.config.credentials = cognitoCredentials;

});

并且通过开发者认证登录后:

cognitoCredentials.params.IdentityId = output.identityId;
cognitoCredentials.params.Logins = {
    'cognito-identity.amazonaws.com': output.token
};
cognitoCredentials.expired = true;

如果我已经登录,然后刷新页面,然后尝试再次登录,我会收到一条错误消息,提示我正在尝试获取身份,而我已经拥有身份Error: Missing credentials in config(…) NotAuthorizedException: Missing credentials in config "Access to Identity 'us-east-1:xxxxxxx' is forbidden."

但是,我不知道如何访问它。如何检索凭据,以便在刷新页面时可以检测到 Cognito 提供的先前身份?


至少节省accessKeyId, secretAccessKey, sessionToken in sessionStorage页面之间。您可以将它们加载到 AWS.config.credentials 中(当然是在加载 AWS SDK 之后)。这比等待 Cognito 响应要快得多。请记住,您必须使用提供商之一的令牌手动刷新它们,并且这只在临时令牌过期(大约 1 小时)之前有效。

var credKeys = [
    'accessKeyId',
    'secretAccessKey',
    'sessionToken'
];

// After Cognito login
credKeys.forEach(function(key) {
    sessionStorage.setItem(key, AWS.config.credentials[key]);
});

// After AWS SDK load

AWS.config.region = 'us-east-1'; // pick your region

credKeys.forEach(function(key) {
    AWS.config.credentials[key] = sessionStorage.getItem(key);
});

// Now make your AWS calls to S3, DynamoDB, etc
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在浏览器中跨页面保留 Cognito 身份 的相关文章

随机推荐

  • R 中的 QR 分解和 Cholesky 分解

    我最近读到了如何使用 Choleski 分解来计算 QR 分解的 R 矩阵 其关系为 R Cholesky 分解 A TA Example gt A matrix c 1 2 3 2 3 5 1 3 2 nrow 3 gt A 1 2 3
  • athena 跳过以下划线开头的键

    我正在尝试与 aws athena 合作 对我们存储在 s3 中的 json 文件进行一些查询 因此 我设法创建了一个简单的模式 一切似乎都很好 直到我注意到我的一些文件没有被考虑在内 文件的键是用户 ID 其中一些以 开头 所有这些都在雅
  • Java - CompletableFutures - 如果出现异常,我如何取消所有期货

    我有一个方法 包括在下面 来返回列表的值CompletableFutures 该方法应该 能够在给定时间后超时 如果有超过n个例外 能够取消所有期货 第一点效果很好 但在超过超时限制后确实失败了 我还需要打电话exectuorService
  • 在这种情况下抛出什么类型的异常?

    我正在编写一个 C 应用程序 它使用自动化来控制另一个程序 当然 该程序必须运行才能使我的程序正常工作 当我的程序查找应用程序但找不到它时 我想抛出异常 当然 现在我可以尝试打开应用程序 或者告诉用户打开它 或者 我应该实现自定义异常 还是
  • 让 is_purchasable 挂钩也适用于 Woocommerce 产品变体

    我创建了 2 个自定义产品字段 可用性 从何时 到何时 因此 如果当前日期在这些设定的可用日期之间 则产品是可购买的 否则 则不可购买 一切都很完美 但只有在我发布具有变化的产品之前 然后 就像产品变体忽略这些自定义可用性字段 值一样 即使
  • 使用实体框架实体作为业务对象?

    我使用 Microsoft 的实体框架 O R 映射器 并使用实体类 映射到数据库对象的生成类 作为业务对象 这个可以吗 请说出你的缺点或优点 在业务层和表示之间进行 WCF 通信的情况下该怎么办 如何将这些对象作为数据成员发送 首先 在撰
  • 如何重置 API 权限 Microsoft Graph

    我正在使用 Microsoft Graph 开发一些东西 起初 只给予一些许可 但我发现这还不够 我添加了更多权限 但似乎不起作用 因为我登录后 授权网出不来 我正在按照步骤操作使用 Microsoft Graph 我正在使用 ADv1 我
  • 如何使用现有的登录 Chrome 用户配置文件正确设置 VS Code 以在 Chrome 中进行调试?

    我有一个用 VS Code 编写的 React 应用程序 为了测试和调试我的工作 我进入终端并输入npm start 这将启动应用程序服务器 并在当前登录用户下正确启动 chrome 该用户已安装 React Devtools 扩展 不过
  • 如何在 CodeIgniter 中上传多个图像并进行验证

    我正在尝试上传多张经过验证的图像 但无法执行此操作 我的查看代码如下 ul li Category Image li ul
  • 除非我强制转换返回变量,否则对静态扩展方法进行存根似乎可以在 Rhino Mocks 中工作。为什么?

    我可以使用 Rhino Mocks 存根静态扩展方法 但如果我将返回值转换为另一种类型 则会收到错误 为什么 using Rhino Mocks public interface INumberGenerator double GetDou
  • Xcode 9 模拟器上的 Google 地图在移动地图时使用超过 100% 的 CPU

    因此 我现在已将我的项目转换为在 Xcode 9 中使用 Swift 4 并开始测试我的应用程序 这是一个大型应用程序 有四个不同的选项卡 几乎所有内容都按预期运行 其中一个选项卡是地图 使用 GoogleMaps 我从来没有遇到过任何问题
  • Gradle Ear 使用当前 WAR 文件名更新 application.xml

    我有一个 java EAR 项目 其中包含一些 WAR Web 应用程序 我正在使用 gradle 构建 EAR 文件 uberApp gt WarA
  • #<#:0x007fe3546d58f0> 的未定义方法 `posts_path'

    我是 Rails 新手 收到此错误 undefined method posts path for lt
  • Outlook - 根据收件人插入文本

    我需要根据收件人自动将文本插入到外发电子邮件中 我在另一个问题 归功于 76Mel 的答案中发现了一些看起来很有希望的代码 看来我可以将代码附加到 ThisOutlookSession 中的 ItemSend Private Sub App
  • Discord.py 无法获取证书

    我是否必须在系统内安装 生成 下载新证书 或者我是否可以以某种方式禁用 python 内的证书 ubuntu 18 python 3 7 discord py latest INFO 2019 03 05 22 58 02 Initiali
  • 如何在角度js中显示依赖选择框选项[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我有一个表单 我想要两个选择框 以便其中一个选择框的某些选项将根据另一个选择框的当前值显示 隐藏 e g Select
  • 在基本图形的绘图区域之外绘制图例?

    正如标题所说 使用基础图形时如何在绘图区域之外绘制图例 我想过摆弄layout并生成一个仅包含图例的空图 但我对仅使用基本图形设施的方式感兴趣 例如 par mar 在图例的右侧留出一些空间来放置图例 这里有一个例子 plot 1 3 rn
  • 我应该停止使用抽象基类/接口,而是使用 boost::function/std::function 吗?

    我刚刚了解了 std function 的真正含义以及它的用途 我有一个问题 现在我们基本上有了委托 我们应该在何时何地使用抽象基类 以及何时应该实现通过 std function 对象提供给泛型类的多态性 ABC在C 11中是否受到致命打
  • 双重调度和替代方案

    我正在努力寻找更好的方法来处理一些成长if构造来处理不同类型的类 这些类最终是不同值类型 int DateTime 等 的包装器 并带有一些附加状态信息 因此 这些类之间的主要区别在于它们包含的数据类型 虽然它们实现了泛型接口 但它们也需要
  • 如何在浏览器中跨页面保留 Cognito 身份

    我使用开发人员经过身份验证的身份通过客户端浏览器上的 Cognito 进行身份验证 当我的页面加载 或刷新 时 我希望我的应用程序能够记住身份 只要对象没有过期 我认为它会持续大约一个小时 但是 我不知道如何从 Cognito 检索身份 而