如何,何时何地刷新Angular 2/5应用程序中的令牌?

时间:2017-12-15 10:59:24

标签: javascript angular single-page-application angular5

目前我正在使用 -

  • Django REST框架
  • Angular 5
  • RxJS +
  • 的OAuth2

除LoginComponent之外的所有组件的路径列表我有AuthGuard,我在其中检查令牌上的数据和浏览器的localstorage中的用户。

如果数据可用,我将返回True。但是一旦令牌过期,我就无法对用户做任何事情。

如果我在服务中获得401代码,我甚至无法将用户重定向到登录页面,因为我无法在服务中使用路由器。

基本上我想知道在我的网络应用程序中更新令牌的方式,时间和地点?

请提供一些有关如何使用令牌的知识。如果提供任何代码示例,它也会有所帮助。

1 个答案:

答案 0 :(得分:0)

你的问题太广泛,而且基于意见。但如果你想要一个第三方的观点,这是我的两分钱:

存储令牌

根据您的应用程序,您可以通过多种方式存储令牌。

localStorage的

第一个解决方案,即您使用的解决方案,将其存储在本地存储中。这样,只要您(或用户)没有删除令牌,令牌就会保留在设备上。

会话存储

会话存储的行为与本地存储相同,只是一旦用户关闭会话就会删除该令牌。

服务存储

最后一个选项:将其存储在服务中:只要您的用户处于Angular范围内(即不重新加载或更改制表符),您的令牌就会保留。

如何选择?

取决于您的申请。如果您在登录后创建涉及高风险的应用程序,则应考虑使用会话存储,以便用户在离开页面后立即“删除”。对于临时应用程序,请留在本地存储中。如果您真的想要锁定您的应用程序,请使用服务存储。

何时存储令牌

看起来很明显,但您应该在用户登录时存储它。

更新令牌

你不应该这样做。令牌匹配用户或用户会话。您应该做的唯一更新是删除,而不是重写。

更新令牌的位置

致力于令牌管理的服务。这是最佳做法。

更多信息

你说你有一个Auth Guard。这是一个很好的做法。但是的,您可以从服务中重定向用户。你为什么不呢?这是要求用户连接的常用方法!在你的服务中使用路由器,真的,没有问题。

从我的角度来看,以及你描述的内容,除了守卫中的路由,你做得很好。我给你的唯一建议是处理你的令牌的过期日期,如果你的应用程序是高风险的配置文件(并且你必须使用会话存储)。