javascript - 如何、在何处以及何时刷新 Angular 2/5 应用程序中的 token ?

标签 javascript angular single-page-application angular5

目前我正在与 -

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

除 LoginComponent 之外的所有组件的路径列表我有 AuthGuard,在其中检查 token 和用户上的数据是否在浏览器的本地存储中。

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

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

基本上我想知道如何、何时以及在哪里更新我的网络应用程序中的 token ?

请提供一些有关如何使用 token 的知识。如果提供任何代码示例也会很有帮助。

最佳答案

您的问题太宽泛,并且基于观点。但如果你想要第三方的观点,这是我的两点意见:

存储 token

根据您的应用程序,您有多种存储 token 的方法。

本地存储

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

session 存储

session 存储的行为与本地存储相同,只是一旦用户关闭 session , token 就会被删除。

服务存储

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

如何选择?

取决于您的应用程序。如果你做的应用在登录后涉及高风险,那么你应该考虑使用session存储,这样用户一离开页面就被“移除”。对于临时应用程序,请保留在本地存储上。如果您确实想锁定您的应用程序,请使用服务存储。

何时存储 token

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

更新 token

您不必这样做。 token 与用户或用户 session 匹配。您应该做的唯一更新是删除,而不是重写。

在哪里更新 token

在专门用于 token 管理的服务中。这是最佳实践。

更多信息

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

从我的 Angular 来看,以及您所描述的,除了守卫中的路由之外,您做得非常好。如果您的应用程序处于高风险状态(并且您必须使用 session 存储),我给您的唯一建议是处理 token 的到期日期。

关于javascript - 如何、在何处以及何时刷新 Angular 2/5 应用程序中的 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47830929/

相关文章:

javascript - 如何在javascript中没有内置函数的情况下查找子字符串?

javascript - AngularJS - $scope 变量未在工厂中更新

css - Ionic 2 动画不适用于 iOS 设备

javascript - Angular2 条件表单验证器

amazon-s3 - 单页应用程序 + Amazon S3 + Amazon CloudFront + Prerender.io - 如何设置?

javascript - 在 javaScript 中使用 onclick() 调用 2 个不同的 div

forms - Angular 形式输入值未定义

javascript - 通过 AJAX 加载 SPA 网页

javascript - Vue.js 根据条件绑定(bind)到类

javascript - React Native - 访问同一类上的静态变量