在Android/jQuery移动应用程序中保存凭据



我们正在用Android中的Webview控件包装一个jQuery移动应用程序。jQuery移动应用程序有一个登录页面。我们希望允许用户保存他们的登录信息。

诀窍是,客户更希望我们不使用cookie来这样做。

解决方案/问题#1:

我们已经考虑过可能创建一个Android登录屏幕,该屏幕调用身份验证服务并存储令牌。然后,令牌通过url属性中的querystring传递到Web视图中。jQuery移动应用程序可以从查询字符串中获取令牌并对其进行验证,从而绕过移动应用程序的登录屏幕。

然而,问题是…当用户通过jQuery移动应用程序注销时会发生什么?移动应用程序如何告诉Android包装器删除令牌?

解决方案#2,但存在相同问题

相同的Android登录屏幕,但不是通过查询字符串param传递,而是在Android端使用javascript,遍历Webview DOM,并在jQuery移动登录屏幕上填写用户名和密码。如果启动应用程序时Android端存在该令牌,只需绕过Android登录屏幕并自动填写用户凭据即可。

不过,用户手动注销仍然存在同样的问题。

我们是不是根本没有正确地思考这个问题?

想法?

您可以使用您的webviews本地存储。你必须使用WebViewSettings类在你的网络视图中启用它:

WebSettings settings = webview.getSettings();
settings.setDomStorageEnabled(true);

现在,您应该能够使用javascript访问localStorage,就像在任何其他支持它的浏览器中一样:

window.localStorage
// Set value
window.localStorage.setItem("username", "XXX");
// getting the value
var username = window.localStorage.getItem("username");

备选方案2:为您的应用程序创建一个javascript接口。这将允许您在Android应用程序中创建和调用一个javascript函数来触发java代码。此主题描述如下:http://developer.android.com/guide/webapps/webview.html在"将JavaScript代码绑定到Android代码"

最新更新