当用户登录 Angular 2 时来自 localStorage 的奇怪 null 'id_token'

strange null 'id_token' from localStorage when user is logged in Angular 2

当用户登录后,他被重定向到主页,一切正常。当用户尝试导航到他的个人资料页面(或管理页面)时,服务器会以 401 Unauthorized 响应,因为来自 localStorage 的 id_token 在控制台日志中为空。但是,chrome 的 localStorage 有正确的 id_token。请注意,需要令牌才能工作的所有其他组件都可以! (??)。 如果我刷新页面,那么一切正常。

问题是,为什么配置文件和管理服务不能 'see' localStorage id_token?

这是我的 github 回购:https://github.com/predatorkill/ng2-form-demo

这里是出现问题的两个组件:

管理员服务:https://github.com/predatorkill/ng2-form-demo/blob/master/src/app/client/admin/services/admin.service.ts

配置文件服务:https://github.com/predatorkill/ng2-form-demo/blob/master/src/app/client/user/profile/profile.service.ts

有人可以解释为什么会出现这种行为吗?我从昨天开始就在努力寻找问题,但没有运气......

另外,为什么用户登录后没有立即在导航栏中显示用户的电子邮件?

这是导航栏组件: https://github.com/predatorkill/ng2-form-demo/blob/master/src/app/client/navbar/navbar.component.ts

我对导航栏未显示电子邮件的猜测是因为出于同样的原因它看不到 'id_token' 它看不到用户 ID。

您应该使用 AuthHttp 而不是 http。它会处理好一切。查看此示例和服务文件以了解详细信息。

https://github.com/darpanpathak/MEAN2-MarvelApp/blob/master/development/services/authentication.service.ts