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

如何在AWS Amplify Auth.signIn成功后访问各类Token?

解决AWS Amplify Auth.signIn无法访问Token的问题

我之前用Amplify Auth的时候也碰到过一模一样的坑——明明console.log(user)能看到那些Token属性,但代码里直接用点语法访问就是拿不到!其实这是因为这些属性是不可枚举的,没法通过常规方式直接读取,但官方其实提供了标准的方法来获取这些值,给你两种靠谱的解决方案:

方法一:使用官方推荐的内置方法(优先选择)

Amplify的CognitoUser对象自带了getSignInUserSession()方法,专门用来获取包含所有Token的会话对象,你可以通过这个方法层层提取需要的Token:

const user = await Auth.signIn(email, password);
// 获取登录会话实例
const signInSession = user.getSignInUserSession();

// 提取各类Token的字符串值
const idToken = signInSession.getIdToken().getJwtToken();
const accessToken = signInSession.getAccessToken().getJwtToken();
const refreshToken = signInSession.getRefreshToken().getToken();

这里拆解下每个方法的作用:

  • getSignInUserSession():返回CognitoUserSession实例,包含当前登录会话的完整Token信息
  • getIdToken()/getAccessToken():返回对应的Token对象,调用getJwtToken()就能拿到最终的JWT字符串
  • getRefreshToken():返回刷新Token对象,调用getToken()即可获取刷新Token的字符串

方法二:直接访问不可枚举属性(仅应急,不推荐)

如果你临时需要快速获取,也可以通过Object.getOwnPropertyNames(user)找到隐藏的属性名,再用方括号语法访问,但这种方法依赖Amplify的内部实现,后续版本更新可能会失效,所以尽量用方法一:

const user = await Auth.signIn(email, password);
// 直接访问隐藏的会话属性
const session = user['signInUserSession'];
// 后续提取逻辑和方法一一致
const idToken = session.getIdToken().getJwtToken();

额外小提示

如果用户已经处于登录状态,不需要重复调用signIn来获取Token,直接用Auth.currentSession()更高效:

const session = await Auth.currentSession();
const idToken = session.getIdToken().getJwtToken();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:58:19