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

React Native中AWS Amplify与Cognito验证邮箱时出现No current user错误

问题原因
  • 本地缓存同步延迟:调用confirmSignUp成功后,Amplify内部需要将用户的验证状态同步到本地缓存,但这个同步过程是异步的。如果在缓存还没完成更新时就调用currentSession(),就会因为本地没有有效会话数据抛出「No current user」错误。非必现的原因是网络环境、设备性能差异会导致缓存同步的速度不稳定。
  • 会话未自动初始化:confirmSignUp仅完成邮箱验证操作,Amplify不会自动为已验证用户初始化会话。currentSession()依赖已初始化的用户会话,此时会话未建立就会报错。
  • React Native异步执行时序问题:confirmSignUp的Promise虽然已resolve,但底层的用户状态更新可能还在React Native的异步队列中等待执行,此时提前调用currentSession()会拿不到最新状态。
解决方案

方案1:验证后手动执行登录(最可靠)

在confirmSignUp成功后,调用Auth.signIn()重新登录用户,确保会话被正确初始化,之后再获取令牌:

import { Auth } from "aws-amplify";

try {
  setLoading(true);
  await Auth.confirmSignUp(username, code);
  // 验证后重新登录,初始化会话
  await Auth.signIn(username, password);
  // 此时再获取会话就不会有问题
  const token = (await Auth.currentSession())
    .getAccessToken()
    .getJwtToken();
} catch(err){
  console.log(err);
}

方案2:使用currentAuthenticatedUser()触发会话同步

currentAuthenticatedUser()会等待用户状态同步完成,或者主动触发同步,之后再从中获取会话信息:

import { Auth } from "aws-amplify";

try {
  setLoading(true);
  await Auth.confirmSignUp(username, code);
  // 先确保用户已被认证并同步状态
  const user = await Auth.currentAuthenticatedUser({ bypassCache: true });
  // 从用户对象中获取会话
  const session = await user.getSession();
  const token = session.getAccessToken().getJwtToken();
} catch(err){
  console.log(err);
}

注意:bypassCache: true会强制从服务端拉取最新用户状态,避免缓存不一致的问题。

方案3:临时兼容方案(不推荐)

如果不想重新登录,可以手动触发用户状态刷新后延迟获取会话,但延迟时间难适配所有场景,仅作为临时方案:

import { Auth } from "aws-amplify";

try {
  setLoading(true);
  await Auth.confirmSignUp(username, code);
  // 手动触发用户状态刷新
  await Auth.currentUserPoolUser();
  // 延迟一小段时间再获取会话
  setTimeout(async () => {
    const token = (await Auth.currentSession())
      .getAccessToken()
      .getJwtToken();
    // 处理令牌逻辑
    setLoading(false);
  }, 500);
} catch(err){
  console.log(err);
  setLoading(false);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:45:36