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

AWS Amplify Auth用户删除后未登出仍保持认证状态问题

问题解决:AWS Amplify Auth本地缓存导致已删除用户仍显示认证状态

问题原因

Auth.currentAuthenticatedUser()默认优先读取本地缓存的用户数据,不会主动向Cognito服务端校验用户是否存在或令牌是否有效。所以即使你在控制台删除了用户,只要本地缓存没被清除、没有执行显式登出,刷新应用时依然会从缓存读取旧的用户信息,导致显示已认证状态。

解决方案

要解决这个问题,需要强制让Amplify向Cognito服务端验证用户状态,而不是只依赖本地缓存。可以通过以下方式实现:

修改loadApp函数,强制从服务端校验用户状态

给Auth.currentAuthenticatedUser()传入{ bypassCache: true }参数,跳过本地缓存直接请求服务端获取最新用户信息:

const loadApp = async () =>{ 
  try {
    const user = await Auth.currentAuthenticatedUser({ bypassCache: true });
    console.log(user);
    signIn(user);
  } catch (err) {
    console.log("用户已失效或未登录", err);
    setUserToken(null);
  }
  setLoading(false);
}

备选方案:结合会话与用户信息双重验证

先获取当前会话令牌,再通过用户ID去服务端拉取最新信息,确保用户在服务端仍处于有效状态:

const loadApp = async () =>{ 
  try {
    const session = await Auth.currentSession();
    const user = await Auth.getUser(session.getIdToken().payload.sub);
    signIn(user);
  } catch (err) {
    console.log("用户已失效或未登录", err);
    setUserToken(null);
  }
  setLoading(false);
}

额外优化建议

  • 可在Amplify配置中开启令牌自动刷新,确保令牌过期后自动触发服务端验证
  • 在用户操作敏感功能(如支付、个人信息修改)时,主动调用服务端验证逻辑,避免缓存数据导致的权限漏洞

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 18:55:17