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

Amplify V6下AWS AppSync无法读取Cognito自定义属性求助

Amplify v6下AppSync解析器获取Cognito自定义属性的解决方案

检查Cognito用户池属性配置

  • 先确认custom:mydata已设置为可在Token中返回:
    1. 打开AWS控制台的Cognito用户池,找到对应应用客户端
    2. 进入客户端设置页面,在「ID Token」或「Access Token」的属性列表里勾选custom:mydata(根据你实际使用的Token类型选择)
    3. 如果使用Access Token,需额外检查用户池的属性映射配置,确保custom:mydata被添加到Access Token的输出字段中——默认情况下Access Token不会自动包含所有自定义属性

验证前端Token是否包含目标属性

Amplify v6的会话获取逻辑有变化,先在前端确认拿到的Token里是否存在custom:mydata:

import { fetchAuthSession } from 'aws-amplify/auth';

const session = await fetchAuthSession();
// 解析ID Token的Payload
const idTokenPayload = JSON.parse(atob(session.idToken?.payload.split('.')[1] || ''));
console.log(idTokenPayload['custom:mydata']);
// 如果使用Access Token则解析对应Payload
const accessTokenPayload = JSON.parse(atob(session.accessToken?.payload.split('.')[1] || ''));
console.log(accessTokenPayload['custom:mydata']);

如果前端这里拿不到属性值,说明Token本身未携带该字段,优先调整Cognito配置。

调整AppSync解析器与配置

  • 确认AppSync使用的Token类型:若用ID Token,自定义属性应直接出现在context.identity.claims中;若用Access Token,必须确保Cognito已将属性注入Access Token
  • 检查AppSync身份验证配置:在AppSync控制台的API设置中,确认Cognito用户池作为身份提供者时,属性映射规则正确,未遗漏custom:mydata
  • 解析器中可直接用context.identity.claims['custom:mydata']访问属性,替换原v5的get()写法尝试

强制刷新会话缓存

旧Token的缓存可能导致新配置不生效,前端强制刷新一次会话:

await fetchAuthSession({ forceRefresh: true });

之后重新发起AppSync请求,查看解析器中的context.identity是否已包含custom:mydata

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 23:52:42