Android 在应用程序中隐藏敏感数据
我正在使用改装请求:Android 在应用程序中隐藏敏感数据,android,security,retrofit,Android,Security,Retrofit,我正在使用改装请求: @Headers("Authorization: Basic: UsernamePassword") @POST("services/2/something/something") fun createPlan(@Body planData: PlanInfo): Call<Plan> @Headers(“授权:基本:用户名密码”) @邮政(“服务/2/某物/某物”) fun createPlan(@Body planD
@Headers("Authorization: Basic: UsernamePassword")
@POST("services/2/something/something")
fun createPlan(@Body planData: PlanInfo): Call<Plan>
@Headers(“授权:基本:用户名密码”)
@邮政(“服务/2/某物/某物”)
fun createPlan(@Body planData:PlanInfo):调用
在我的标题中,我要求以Base64编码发送usrname、密码和字符串。但如果对应用程序进行解码,就不那么难了。
所以我参考了手册:在android应用程序中隐藏敏感数据
但现在当我使用常数的数据时,就像这样:
@Headers("Authorization: "+ConstantsEncrypted.usernamePassword())
@POST("services/2/something/something")
fun createPlan(@Body planData: PlanInfo): Call<Plan>
@Headers(“授权:+ConstantEncrypted.usernamePassword())
@邮政(“服务/2/某物/某物”)
fun createPlan(@Body planData:PlanInfo):调用
我得到一个错误:注释参数必须是编译时常量
那么,我如何才能正确地隐藏这些敏感数据呢?您不能使用注释方法来实现这一点。以下是我在项目中如何做到这一点
class Authenticator : Authenticator {
override fun authenticate(route: Route?, response: Response): Request? {
return response.request().newBuilder()
.header("Authorization", ConstantsEncrypted.usernamePassword()).build()
}
}
不要忘记使用authenticator(authenticator())
将其添加到您的OkHttpClient.Builder()
实例中,如下所示:
OkHttpClient.Builder().apply {
writeTimeout(120, TimeUnit.SECONDS)
readTimeout(120, TimeUnit.SECONDS)
connectTimeout(120, TimeUnit.SECONDS)
callTimeout(120, TimeUnit.SECONDS)
// your code
// this is where you add your authenticator
authenticator(Authenticator())
// more code
}.build()
Authenticator
来自软件包okhttp3
。您可以找到有关类的更多信息。找到了一个解决方案,将标题发送到函数:
fun createPlan(@HeaderMap headers: Map<String, String>,@Body planData: PlanInfo): Call<Plan>
fun createPlan(@HeaderMap headers:Map,@Body planData:plannifo):调用
<代码>请考虑接受答案,如果它对你有用的话!非常感谢您的帮助,我找到了其他更简单的解决方案。