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

Amplify仅在Safari环境下跳转站点时报“No current user”错误如何解决?

根因定位
  • Safari的智能跟踪预防(ITP)策略会限制非用户主动交互触发的页面导航的存储访问权限,通过JS自动调用window.location.assign/replace这类方法触发的跳转,会被ITP判定为非可信行为,导致跳转后站点无法读取原有存储的身份凭证
  • Amplify默认的身份初始化逻辑中,如果首次读取凭证失败,会主动清除本地已有的存储内容,进一步导致凭证丢失,触发重定向到登录页
  • 手动输入URL跳转属于用户主动触发的导航行为,不会被ITP限制,因此可以正常读取凭证
修复方案
  • 优先使用<a>标签跳转替代JS跳转,将跳转目标写入href属性,天然符合Safari对用户主动交互的判定规则,无额外兼容问题
  • 必须使用JS跳转的场景,要保证跳转逻辑在用户主动触发的事件回调(如按钮点击、链接点击事件)中执行,不要在异步请求回调、定时器、页面初始化逻辑等非用户直接触发的上下文中调用跳转方法
  • 调整Amplify Auth配置,补充sameSite属性,明确强制使用Cookie存储避免localStorage被限制,修改后的配置如下:
import { CookieStorage } from 'amazon-cognito-identity-js'; // 需引入对应的依赖

auth: {
    region: "eu-west-2",
    userPoolId: "eu-west-2_XXXXXXXX",
    userPoolWebClientId: "XXXXXXXXXXXXXXXXXXXXXX",
    storage: new CookieStorage({
      domain: "XXX.XXXXX.com",
      path: "/",
      expires: 365,
      secure: true,
      sameSite: "Lax"
    }),
    cookieStorage: {
      domain: "XXX.XXXXX.com",
      path: "/",
      expires: 365,
      secure: true,
      sameSite: "Lax"
    }
}
  • 跳转前主动调用一次Amplify.Auth.currentSession()确认凭证有效,避免Amplify在新页面初始化时误判凭证不存在主动清除存储内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:36:03