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

Angular 19 + AWS Amplify v6迁移后遇UserUnAuthenticatedException问题求助

排查Angular 19 + AWS Amplify v6 OAuth登录后UserUnAuthenticatedException问题

1. 补全OAuth回调后的会话初始化逻辑

Amplify v6 要求显式处理Cognito跳转回的授权码,完成授权码到令牌的交换,否则会话不会被初始化。在你指定的redirectSignIn组件(即/login组件)中添加以下代码:

import { Auth } from 'aws-amplify/auth';
import { Router } from '@angular/router';

constructor(private router: Router) {}

ngOnInit() {
  // 处理Cognito返回的授权响应
  Auth.handleAuthResponse(window.location.href)
    .then(() => {
      // 会话初始化成功,跳转至受保护页面
      this.router.navigate(['/你的目标页面']);
    })
    .catch(err => {
      console.error('授权响应处理失败:', err);
    });
}

Amplify v5会自动完成该流程,但v6必须显式调用handleAuthResponse,这是迁移后最常见的遗漏点。

2. 核对Cognito用户池客户端配置

  • 确保用户池客户端的Allowed Callback URLs完全包含http://localhost:4200/login(协议、端口、路径必须和配置中的redirectSignIn一致)。
  • 确认用户池客户端启用了Authorization Code Grant(匹配你的responseType: "code"配置),且未勾选Generate client secret(前端应用无法安全存储客户端密钥)。

3. 调整AuthGuard中会话检查逻辑

v6中fetchAuthSession在未初始化会话时会直接抛出异常,建议先通过getCurrentUser判断用户状态,再验证会话有效性:

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

async canActivate(): Promise<boolean> {
  try {
    const user = await Auth.getCurrentUser();
    if (user) {
      const session = await Auth.fetchAuthSession();
      // 验证访问令牌是否未过期
      return session.tokens?.accessToken?.expiresAt! > Date.now();
    }
  } catch (err) {
    // 未登录时,生成Cognito托管UI跳转链接
    const signInUrl = await Auth.signInWithRedirect();
    window.location.href = signInUrl;
    return false;
  }
  return false;
}

4. 修复配置中的语法错误

你的identityPoolId末尾多了一个多余的>符号,修正后:

"identityPoolId": "<identity_pool_id>",

配置格式错误可能导致Auth模块隐式异常,影响会话初始化流程。

5. 确认Amplify初始化时机

在main.ts中确保先完成Amplify配置,再引导Angular应用:

import { Amplify } from 'aws-amplify';
import amplifyConfig from './amplifyconfiguration.json';

// 优先配置Amplify
Amplify.configure(amplifyConfig);

// 再启动Angular应用
bootstrapApplication(AppComponent, appConfig)
  .catch(err => console.error(err));

若配置晚于应用启动,可能导致Auth模块未正确加载配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 05:42:42