问题描述
在我的应用程序中,我使用的是 JWT 身份验证。在令牌的有效负载中,我存储了用户 ID。登录后,或者当用户刷新页面并且仍然有一个有效的令牌时,我使用令牌中的 id 从我的后端检索有关用户的一些信息。我需要在依赖它们的应用程序的多个组件之间共享这些信息。
当前解决方案
我有一项服务可以检索这些信息并将其存储在一个对象中。依赖这些信息才能正常工作的组件会在其中注入此服务(服务是单例),并在其布局顶部有一个 *ngIf 以避免在信息不存在时显示任何内容。
可能的替代解决方案(Route Resolves)
我最近发现了路由解析守卫。这些对我有用吗?我可以实现一个警卫,要求在显示页面之前加载信息,并将其添加到所有需要它们的路由中。
- 那些警卫像服务一样工作吗?
- 这些可以注入组件中吗?他们是单身人士吗?
- 如果我将包含用户信息的对象返回给路由(我会在第一次加载后将对象存储在路由保护中,以避免不必要的 api 调用),这将是保护内部存在的同一个对象还是副本?(如果我需要修改它)(如本教程中所述http://www.callibrity.com/blog/angular-2-route-resolves)
谢谢