【问题标题】:Angularjs Interceptor Circular Dependency when using Refresh Tokens使用刷新令牌时的Angularjs拦截器循环依赖
【发布时间】:2015-08-10 17:03:14
【问题描述】:

长话短说,我的 angularjs 应用程序中有一个结构,基本上如下: 1. 有一个“authService”负责请求访问令牌和刷新令牌。 2. 有一个 'authInterceptorService' 将令牌添加到请求的标头中,但是,棘手的部分在这里:此服务依赖于 authService,用于使用刷新令牌生成新的访问令牌,以防访问令牌是过期了,请求是401en,这意味着最终会有循环依赖,当我使用$httpProvider服务注册拦截器时:

authService

我的问题是,当您的拦截器需要能够使用刷新令牌发出新的访问令牌并重新发送请求时,如何解决这个问题?

【问题讨论】:

    标签: angularjs dependency-injection access-token interceptor circular-dependency


    【解决方案1】:

    解决这个问题的一种方法是使用 Angular 的事件系统。由于您正在处理服务,您可能需要广播事件 ($emit) 并在 $rootScope 上监听它 ($on)。

    例如,您可以为调用您的令牌刷新服务的“tokenExpired”事件设置一个侦听器,该服务在成功时会触发一个“tokenRefreshed”事件。当请求为 401 时,您会发出 tokenExpired 事件并为 tokenRefreshed 事件注册一个一次性侦听器,以便在刷新后重新发送请求。

    也许不是最干净的解决方案,但我在处理粗糙的依赖链时使用了这样的设置,并且效果很好。

    【讨论】:

      猜你喜欢
      • 2020-05-12
      • 2019-06-14
      • 1970-01-01
      • 2020-02-10
      • 2019-07-09
      • 1970-01-01
      • 1970-01-01
      • 2022-11-03
      • 1970-01-01
      相关资源
      最近更新 更多