对不起,如果这不适合这个论坛,但我不知道该怎么做。我不会在这里发布代码,因为我希望这个问题会提示我可以查看/尝试的 3-4 件事的建议。
我正在使用由天才开发人员提供的 2 个样板:一个 C# .net 核心 webAPI 和 Angular 10 接口以及 MS SQL db。我能够让他们使用我的数据库进行身份验证等,并且我开始对其进行自定义,添加基本功能、表单等。然而,我做了一些事情,在那里我打破了它,我最近保存到 GitHub 的时间比我意识到的要老得多。我最终不得不再次将它拼凑起来,但显然错过了一些东西。
身份验证工作正常。我面临的唯一问题是,现在当我在 Angular 界面(并且界面刷新)上执行 Save All in MS Code 时,我必须再次登录。以前没有这样做,我真的很想回到我每次执行“全部保存”时都不必登录的地方。
对于我可能会检查的内容有什么建议,以了解为什么身份验证无法在刷新后幸存下来?非常感谢。
[新信息 7/12/2021]
[authenticate and refresh-token code][1]
[setTokenCookie code][2]
[getRefreshToken code][3]
答案 0 :(得分:0)
通常将 JWT 放在 localstorage 中,然后在刷新时读取它。也许这是错过了?
您是否看到本地存储中保存了任何内容? Example localstorage from Chrome developers tools
如果是这样,那么它可能没有在刷新时读取 JWT,在您的 Angular 项目中查找 localstorage,如果找到并且它正在读取 JWT,则在刷新时运行该代码,例如一些自动登录代码可能如下所示:< /p>
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();
}
答案 1 :(得分:0)
问题与 SameSite 设置有关(我的代码没有)
我在 CookieOptions 中添加了以下内容
安全 = 真, SameSite = SameSiteMode.None,
马上解决!