【发布时间】:2020-01-20 06:52:02
【问题描述】:
这是一个 Retrofit 拦截器,用于在请求中自动注入令牌。我正在尝试从 sharedPreferences 获取此令牌,但 getSharedPreferences 在那里不可用。
如何从 Interceptor 中的 sharedpreferences 中检索我的令牌?
import android.preference.PreferenceManager
import okhttp3.Interceptor
import okhttp3.Response
class ServiceInterceptor: Interceptor {
var token : String = "";
override fun intercept(chain: Interceptor.Chain): Response {
var request = chain.request()
if(request.header("No-Authentication") == null){
if (request.url.toString().contains("/user/signin") === false) {
// Add Authorization header only if it's not the user signin request.
// Get token from shared preferences
val sharedPreference = PreferenceManager.getSharedPreferences()
token = sharedPreference.getString("token")
if (!token.isNullOrEmpty()) {
val finalToken = "Bearer " + token
request = request.newBuilder()
.addHeader("Authorization", finalToken)
.build()
}
}
}
return chain.proceed(request)
}
}
【问题讨论】:
-
也许您可能想在
ServiceInterceptors 构造函数中传递实例
标签: android kotlin retrofit retrofit2