gpt4 book ai didi

android - 使用 Volley 进行 token 认证

转载 作者:IT老高 更新时间:2023-10-28 23:24:02 26 4
gpt4 key购买 nike

如果我有一台服务器,我使用用户名/密码进行身份验证并为后续请求获取身份验证 token ,解决此问题的最佳方法是什么?

流程应该是这样的:- 开始请求- 如果我们没有身份验证 token - 使用用户名和密码获取它- 使用身份验证 token 发出请求- 如果由于 token 过期而导致请求失败,则使用用户名和密码获取新的身份验证 token - 使用新的身份验证 token 重试请求- 完成

我注意到 Volley 可能已经有一些可以解决这个问题的东西 - Authenticator https://android.googlesource.com/platform/frameworks/support/+/4474bc11f64b2b274ca6db5a1e23e8c1d143d5fa/volley/src/com/android/volley/toolbox/Authenticator.java它包含 getAuthToken() 和 invalidateAuthToken() 方法,这正是我想要的。但是好像根本没在图书馆里用过。

最佳答案

我将 volley 用于使用 longlive (LLT) 和 shortlive (SLT) token 的身份验证系统。

我是手动完成的,但一旦你把它全部布置好,它就真的没什么工作了。

让所有安全请求子类化一个 baseSecureRequest,它可以在其 onResponse() 和 onErrorResponse() 中处理所有安全请求共有的这种 token 机制。

它变成了一点 node.js 风格,请求发送其他请求并等待回调。


一个应用程序可能有十几个屏幕,其中只有一半需要授权访问 - 所以每个屏幕都应该不知道其请求的要求。

场景 A

  • 我们尝试发送安全请求。我们注意到我们没有 SLT内存,所以做一个 TokenRequest。
  • TokenRequest 的 onResponse() 保存该 token 到内存(让单例 session 管理器保留它或类似的无所不在的类)
  • 现在回调到原来的具体类请求对象以继续使用新更新的 token 。

场景 B

  • 我们发送了一个安全请求,但我们的 SLT 已过时(过期)

  • 服务器返回一个错误代码或消息,您可以在您的 baseSecureRequest 的一般 onErrorResponse()。

  • 在这个 onError() 中,你发送一个 refreshTokenRequest() 对象,尝试通过使用 LLT 从服务器请求新的 SLT 来刷新内存中的 SLT。

  • refreshTokenRequest 的 onResponse() 现在可以回调到重新发送的原始请求。

  • 然而 onErrorResponse() 可能应该放弃整个事情,因为机会是任何不是连接错误的东西 - 都是由以下原因引起的错误无效的 LLT。如果您继续尝试使用糟糕的 LLT 进行刷新,您将永远无法脱身。

关于android - 使用 Volley 进行 token 认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17400398/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com