在Android / jQuery Mobile App中保存凭据

时间:2012-01-12 15:27:25

标签: jquery android mobile jquery-mobile android-webview

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

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

解决方案/问题#1:

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

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

解决方案#2,但同样的问题

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

但是,用户手动注销仍存在同样的问题。

我们是不是正确地考虑这个问题?

想法?

1 个答案:

答案 0 :(得分:3)

您可以使用自己的网页浏览localstorage。您必须使用WebViewSettings类在Webview中启用它:

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应用程序中触发Java代码的javascript函数。此主题在此处描述:http://developer.android.com/guide/webapps/webview.html在“将JavaScript代码绑定到Android代码”