【发布时间】:2015-08-08 07:07:30
【问题描述】:
我正在使用 Auth0,它为我提供了一个 JWT(json Web 令牌)和一个刷新令牌。我在 http 标头中使用此 JWT 与我的后端通信。
当服务器确定 JWT 已过期时,它可能会给我一个403。在这种情况下,我可以要求 Auth0 使用 refreshtoken 向我发出一个新的 JWT。这意味着我调用 Auth0 后端,将 refreshtoken 传递给它,它给了我一个新的 JWT,然后我可以在我的请求中使用它。
我的问题是,如何在我的所有网络代码中有效地编写此行为?我将与几个端点通信,它们都可能返回 403。
我想我应该首先制作一个拦截器,将 JWT 添加到所有请求中。
然后应该有检测 403 的行为,悄悄地对 Auth0 进行网络调用,检索新的 JWT。然后应该再次尝试原始请求,并在其标头中使用新的 JWT。
所以我更愿意让这个 403 处理在我的其他代码不可见的地方,并且绝对不必到处重写。
任何关于如何实现这一点的指针将不胜感激。
--
为了清楚起见,我基本上是在寻找有关如何使用 RxAndroid Observables 实现这一目标的指针。当某个 Observable 找到 403 时,它应该“注入”一个新的网络调用。
【问题讨论】:
标签: android retrofit rx-java okhttp auth0