【问题标题】:Saving Credentials in Android / jQuery Mobile App在 Android / jQuery Mobile App 中保存凭据
【发布时间】:2012-01-12 15:27:25
【问题描述】:

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

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

解决方案/问题 #1:

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

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

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

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

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

难道我们根本就没有正确地思考这个问题吗?

想法?

【问题讨论】:

  • 你不能在本地存储凭据吗?
  • 看起来我应该能够使用来自 Frekenstain 的答案,但仅将它们存储在本地并不能解决注销问题。

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


【解决方案1】:

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

【讨论】:

  • 本地存储是要走的路。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
  • 2014-08-22
  • 1970-01-01
  • 2016-04-19
  • 1970-01-01
  • 2018-11-22
相关资源
最近更新 更多