在 Angular 重建时丢失 API JWT 身份验证

Losing API JWT authentication on Angular rebuild

抱歉,如果这不适合本论坛,但我不确定该怎么做。我不会在这里发布代码,因为我希望这个问题会提示我可以查看的 3-4 件事的建议 at/try。

我正在使用一个有天赋的开发人员提供的 2 个样板:一个 C# .net 核心 webAPI 和 Angular 10 接口和 MS SQL 数据库。我能够让他们使用我的数据库进行身份验证等,并且我开始对其进行自定义,添加基本功能、表单等。然而,我做了一些事情,我把它弄坏了,我最近保存到 GitHub 的时间比我意识到的要早得多。我最终不得不再次将它拼凑起来,但显然遗漏了一些东西。

身份验证工作正常。我面临的唯一问题是,现在当我在 Angular 界面(并且界面刷新)上在 MS Code 中执行“全部保存”时,我必须再次登录。它以前没有这样做,我真的很想回到我每次保存全部时都不必登录的地方。

对于我可能会检查的内容有什么建议,以了解为什么身份验证无法在刷新后继续存在吗?非常感谢。

[新信息 7/12/2021]

[authenticate and refresh-token code][1]
[setTokenCookie code][2]
[getRefreshToken code][3]

通常将 JWT 放在本地存储中,然后在刷新时将其读出。也许这被遗漏了?

您看到本地存储中保存的任何内容了吗? Example localstorage from Chrome developers tools

如果是这样,那么它可能没有在刷新时读取 JWT,在你的 Angular 项目中查找本地存储,如果找到并且它正在读取 JWT,那么 运行 刷新时的代码例如,一些自动登录代码可能如下所示:

 autoLogin() {
    const userData = JSON.parse(localStorage.getItem('user'));
    if (!userData) {
      return;
    }
    const loadedUser = new User(userData.email, userData.id, userData._token, new Date(userData._tokenExpirationDate));
    return loadedUser;
  }

并且在 app.component.ts 中启动时该代码可能是 运行(默认情况下是 Angular 中的引导组件):

ngOnInit(): void {
  this.authService.autologin();
  }

问题与 SameSite 设置有关(我的代码有 none)

我将以下内容添加到 CookieOptions

安全=真, SameSite = SameSiteMode.None,

马上修好了!