You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AuthenticationResult创建Cognito客户端会话?

基于外部获取的AuthenticationResult设置Amplify本地会话方案

前置条件

确保你项目中Amplify的Auth配置,与生成AuthenticationResult的Cognito用户池ID、应用客户端ID完全一致,否则会话校验会失败。

实现步骤

  1. 导入所需依赖
import { Auth } from 'aws-amplify';
import { CognitoUserSession, CognitoIdToken, CognitoAccessToken, CognitoRefreshToken } from 'amazon-cognito-identity-js';
  1. 用你拿到的AuthenticationResult构造Token实例
// 替换为你从后端/其他渠道获取的AuthenticationResult实际值
const externalAuthResult = {
  IdToken: 'xxx',
  AccessToken: 'xxx',
  RefreshToken: 'xxx',
  ExpiresIn: 3600
};

const idToken = new CognitoIdToken({ IdToken: externalAuthResult.IdToken });
const accessToken = new CognitoAccessToken({ AccessToken: externalAuthResult.AccessToken });
const refreshToken = new CognitoRefreshToken({ RefreshToken: externalAuthResult.RefreshToken });
  1. 构造会话实例并写入本地存储
const sessionParams = {
  IdToken: idToken,
  AccessToken: accessToken,
  RefreshToken: refreshToken,
  ExpiresIn: externalAuthResult.ExpiresIn
};

const userSession = new CognitoUserSession(sessionParams);
// 该方法会自动将会话写入你配置的存储介质(localStorage或Cookie)
await Auth.setSignInUserSession(userSession);

注意事项

  • 设置完成后可调用await Auth.currentSession()验证会话是否生效,后续Amplify的接口请求会自动携带该会话凭证
  • 若你没有拿到RefreshToken,构造CognitoRefreshToken时传入空字符串即可,仅会失去自动刷新会话的能力
  • 所有传入的Token必须未过期,否则会话写入会直接抛出校验错误

内容的提问来源于stack exchange,提问作者Itamaram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 10:39:04