我正在实现一个Android应用程序,它将验证服务器的用户详细信息并存储返回令牌。对于后续请求,它应该将令牌与每个请求一起发送。以下是我需要考虑的一些要点。
- 我正在使用Retrofit 2库向服务器发送http请求
- 该令牌将由JWT库生成并发送回客户端
- 如果令牌不存在或无效或过期,服务器将抛出400/401错误
醇>
设计
- Android应用程序的登录页面未受到登录保护,因此用户可以在使用其凭据之前查看该应用程序
- 一旦他进入MainActivity,对其他屏幕的任何请求都需要身份验证。因此,所有其他活动都将检查令牌并重定向到登录活动。
- 如果从服务器收到的任何响应都有400/401标题,它还应该重定向到登录页面。
醇>
考虑到上述要求,我尝试在Retrofit服务生成器类中添加一个拦截器,该拦截器将在每个请求/响应上执行。
问题
对每个请求执行拦截器,而不是每个活动执行一次。即如果主活动中有n个异步调用,则会打开n个逻辑活动(因为所有这些请求都不会出现令牌)。
有人可以帮我识别:
- 如果有更好的设计可以避免此类问题或
- 有没有办法暂停主要活动,直到登录完成后再恢复。
醇>