我有一个安卓应用程序,它使用春季安卓库与我的 Restful API 进行通信。我不确定如何处理客户端令牌过期时的情况。我想捕获任何 401 错误,只需获取一个新令牌并重试请求。
我创建了一个 ResponseErrorHandler 并将其连接到我的 rest 模板:
public class UnauthorizedErrorHandler implements ResponseErrorHandler {
....
public void handleError(ClientHttpResponse response) throws IOException {
if (response.getStatusCode().value() == HttpStatus.SC_UNAUTHORIZED) { // 401 error
// fetch a new token
// Retry request now that we have a new token????
}
}
}
我的问题是我无法访问响应错误处理程序中的原始请求。除非我错过了什么,否则这个策略似乎是合理的,但我不确定如何让它发挥作用。对于任何使用 OAuth 令牌的客户来说,这似乎也是一个典型场景,所以希望有人能为我指出正确的方向。
如果令牌已过期,则应要求用户再次登录。
假设用户删除了您的 OAuth 应用程序访问权限,您的应用程序将收到过期令牌或类似错误,您应该让用户登录并再次授予您的应用程序访问权限。
如果您引用的不是 OAuth 令牌,而是您自己的 API,则应创建某种机制来更新客户端要使用的令牌。例如,您可以在响应上发送带有新令牌的标头,要求用户从该点开始使用新值,或者作为响应正文的一部分或请求令牌交换的推送通知等。