Junior — Middle
Használható-e a Retrofit az lejárt tokenek automatikus kezelésére API-kérések során?
sobes.tech MI
Válasz az MI-től
A Retrofit önmagában nem biztosít beépített mechanizmust az lejárt tokenek automatikus kezelésére (például a token frissítése 401 Unauthorized válasz esetén). Ez azonban megvalósítható egy egyedi OkHttp interceptor segítségével, amely elfogja a válaszokat, ellenőrzi a hibakódot, és szükség esetén végrehajtja a token frissítésének logikáját és az új kérés ismételt küldését.
Példa egy interceptor használatára a token frissítéséhez:
class AuthInterceptor(private val tokenProvider: TokenProvider) : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
var request = chain.request().newBuilder()
.addHeader("Authorization", "Bearer ${tokenProvider.getAccessToken()}")
.build()
val response = chain.proceed(request)
if (response.code == 401) { // lejárt token
synchronized(this) {
val newToken = tokenProvider.refreshToken() // token frissítése
request = chain.request().newBuilder()
.header("Authorization", "Bearer $newToken")
.build()
return chain.proceed(request) // kérés újra küldése az új tokennel
}
}
return response
}
}
Így a Retrofit az OkHttp interceptoraival együtt lehetővé teszi a lejárt tokenek automatikus kezelését.