【发布时间】:2018-07-13 07:44:50
【问题描述】:
我有一个 Android 应用程序,我正在从基本身份验证切换到 JWT,因此,除其他原因外,我不必在本地存储用户的密码。这适用于我的所有 API 请求,但我的应用程序的一部分使用 WebView 来显示托管在我的服务器上的自定义内容。此内容还需要身份验证,目前我使用 WebViewClient 类中的用户名/密码组合来提供凭据。现在我要去 JWT,我不再拥有这些凭据,只有令牌。有没有办法为WebViewClient 提供替代身份验证?我的代码是 Kotlin,但同样的原则也适用于 Java。
inner class WVClient : WebViewClient() {
override fun onReceivedHttpAuthRequest(view: WebView, handler: HttpAuthHandler, host: String, realm: String) {
// WHAT DO I DO HERE INSTEAD?
handler.proceed(username, password)
}
}
【问题讨论】:
-
onReceivedHttpAuthRequest仅针对基本或摘要身份验证 see this answer 触发。使用 JWT,您必须自己确定页面何时需要授权。服务器期望如何接收令牌?传递查询字符串不是一个好主意,因此您可以将其添加为标头,因此您可以尝试将其添加到您自己的WebViewClient的shouldInterceptRequest中。
标签: java android kotlin android-webview jwt