我正在开发一个应用程序,它使用基于OAuth令牌的身份验证。
考虑到我们有访问和刷新令牌,这就是流的样子。
->调用->拦截器追加过期访问令牌令牌-> api返回使用刷新令牌(刷新令牌也过期)的401
这一切都很好,很好--我正在考虑对其进行一些优化,也就是说,我不想调用api,等待401返回。相反,预先检查令牌是否过期,获取新的访问令牌,然后使用有效令牌调用api。
这种使用android系统时间计算令牌到期时间的方法可能有效--但有时在用户更改android时间时可能会被误用。
想知道是否有更好的解决方案,以避免基于android系统时间的过期问题。
发布于 2021-09-23 07:52:18
即使在代码中添加了这样的检查,您仍然需要在问题中显示的流(因此捕获401 s并相应地刷新令牌)。这是因为,正如您注意到的,客户端设备上的时间设置可以更改,或者客户端和服务器之间可能有轻微的时钟偏差(因此没有故意篡改时间设置)。
只有当您访问访问和刷新令牌的过期时间时,您才能在API调用之前检查到期时间。因此,要么您收到了与令牌一起的信息并将其持久化,要么使用了JWT,您可以轻松地检查过期。
就我个人而言,我不会添加这样的检查,除非有一些强有力的论据(例如,您知道您的应用程序将主要用于连接缓慢的远程位置,并且您希望将流量限制在最低限度,等等)。您所介绍的流程是一个常见的流程,并且运行得很好。
https://stackoverflow.com/questions/69286993
复制相似问题