Retrofit2 Authorization - 访问令牌的全局拦截器

新手上路,请多包涵

我正在尝试使用 Retrofit2 ,我想将 Token 添加到我的 Header 像这样:

Authorization: Bearer Token 但下面的 code 不起作用:

 public interface APIService {
    @Headers({"Authorization", "Bearer "+ token})
    @GET("api/Profiles/GetProfile?id={id}")
    Call<UserProfile> getUser(@Path("id") String id);
}

我的服务器是 asp.net webApi 。请帮助我该怎么办?

原文由 farshad 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
1 个回答

最好的方法是使用新的 Authenticator API。

 class TokenAuthenticator : Authenticator {
    override fun authenticate(route: Route?, response: Response): Request? {
        if (response.request.header("Authorization") != null) {
            return null
        }
        return response.request.newBuilder().header("Authorization", "Bearer " + token).build()
    }
}
OkHttpClient.Builder().authenticator(TokenAuthenticator()).build()

参考: https ://square.github.io/okhttp/recipes/#handling-authentication-kt-java

原文由 Zhou Hongbo 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题