首页 文章

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

提问于
浏览
1

目前我正在与 -

  • Django REST框架

  • Angular 5

  • RxJS

  • OAuth2

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

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

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

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

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

1 回答

  • 0

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

    存储令牌

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

    LocalStorage

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

    会话存储

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

    服务存储

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

    如何选择?

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

    何时存储令牌

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

    更新令牌

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

    更新令牌的位置

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

    更多信息

    你说你有一个Auth Guard . 这是一个很好的做法 . 但 yes, you can redirect the user from your service . 为什么不是要求用户连接的通常方式!在你的服务中使用路由器,真的,没有问题 .

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

相关问题