如何为使用 jQuery Mobile、PhoneGap 和 Django 实现的移动 Web 应用程序实现首次登录方案?

Posted

技术标签:

【中文标题】如何为使用 jQuery Mobile、PhoneGap 和 Django 实现的移动 Web 应用程序实现首次登录方案?【英文标题】:How to implement a first-time-only login scheme for a mobile web application implemented with jQuery Mobile, PhoneGap, and Django? 【发布时间】:2011-09-08 11:10:58 【问题描述】:

我正处于使用 jQuery Mobile 开发移动 Web 应用程序的早期(预编码)阶段(我们研究了 Sencha Touch 几个星期,但 jQuery Mobile 更适合我们团队的能力)。我用PhoneGap 包装jQuery Mobile web 应用程序来创建一个iPhone、iPod touch 和iPad 原生应用程序。我将 Django 用于我们的 Web 应用程序,因此打算在这里为服务器端做同样的事情,为移动应用程序和服务器之间的接口使用某种 JSON/Ajax/REST 数据流。由于它是一个仅限移动设备的应用程序,我们应该可以访问所有 html5 类型的东西。

虽然我可能会为此实施提出其他问题/问题,但这是我当前的问题/问题:

我需要设置应用程序,以便用户第一次打开应用程序时,他们必须输入用户名和密码才能进行身份验证。随后,除非用户单击“设置”链接,否则用户不必进行身份验证,该链接为他们提供了一个页面以使用不同的帐户或密码进行身份验证。应用程序在每次启动时仍应使用最初输入的当前用户名和密码向服务器进行身份验证,以确保帐户未被禁用或密码未被更改或其他原因。

我对身份验证方案很陌生。我该怎么办?

【问题讨论】:

【参考方案1】:

我建议不要存储在 HTML5 本地/网络存储中。如果您的目标是 ios PhoneGap,我建议您使用 Keychain Plugin: http://blogs.nitobi.com/shazron/2010/11/06/ios-keychain-plugin-for-phonegap/

【讨论】:

我们最终使用了您的插件,并且到目前为止它仍然有效。 (我相信我的同事发了一条消息问你一个问题,你很有帮助地回答了)。虽然我们认为使用 localStorage 不会是世界末日,但考虑到应用程序的打包方式和我们打算限制分发的方式,但使用钥匙链以正确的方式做到这一点! (请注意,这仅适用于 iOS,不适用于其他 PhoneGap 部署)【参考方案2】:

虽然您不会使用 Sencha Touch,但在 HTTP Authentication 上可以很好地概述这些问题。

关于在初次登录后存储身份验证信息,您可以尝试local storage 或cookie(尽管您可能需要使用PhoneGap to enable cookie storage)。 HTML5 还提供了key-value local client storage。如果身份验证 cookie 有效,我相信这可以为您自动处理;否则,您可以使用本地存储(或encrypted storage)中的身份验证数据在 Ajax 调用中实现document.ready 身份验证检查。

【讨论】:

【参考方案3】:

KeyChain 解决方案仅适用于 iOS 设备,因此,如果这是您的唯一目标,您就可以了。

但是其他人呢?使用 PhoneGap 但只部署到一个框架有点浪费......

我知道 localStorage 不安全,但如果您了解这些限制,那么可以通过一些方法使“不那么明显”。

这是jQuery.handleStorage plugin,它也处理 AES 加密...您可以查看源代码并仅实现您需要的部分(如果您不想使用整个插件,它还支持桌面浏览器!)。

PS:我与该插件或作者没有任何关系

【讨论】:

您也可以使用更新、更灵活的版本,它不需要绑定 a 来形成 github.com/jas-/secStore.js【参考方案4】:

当我开始使用 PhoneGap 进行移动开发时,这是我最关心的问题之一。让我解释一下我要做什么。

当用户尝试登录时,他/她输入用户名和密码,这些用户名和密码将通过 Web 服务调用发送到服务器端。如果身份验证成功,则向用户发出令牌并将其保存在服务器端以供将来通信。用户将收到令牌,并将其保存在本地存储或您喜欢的任何机制中。

现在为了将来的通信使用令牌,令牌将与每个 Web 服务调用一起传递到服务器端,服务器将验证令牌是否是服务器发出的有效令牌。您可以根据您的要求(或不到期)每 72 小时或 48 小时使令牌失效。令牌失效后,您必须登录并获取新令牌。

希望这能解决您的问题。

【讨论】:

【参考方案5】:

试试 HTTP Authentication with HTML Forms 看看是否有帮助。

【讨论】:

感谢您的链接,但仅基于此摘录:“此技术适用于 IE6 和 Firefox,但已知不适用于 Opera 和 Safari,因此如果您关心这些浏览器,您可能想要重新考虑使用它(或花一些时间调查它在那些浏览器中失败的原因)。”我猜这不是我想要为我的移动应用程序追求的东西。此外,它没有解决我的“仅限首次”登录要求。 . .希望我得到一个更准确的答案! :)【参考方案6】:

它说要在 HTML 文件中包含一个 php 文件,但我不确定 PhoneGap 是否适用于 PHP。我这个周末才开始使用 PhoneGap。

【讨论】:

你有指向“它”的链接吗(它就是在说这个东西。)我目前不打算使用任何 php(因为我正在使用 python/django/wsgi在服务器端)。 有人告诉我将 PHP 文件存储在您的服务器中,然后使用 AJAX 进行信息交易。

以上是关于如何为使用 jQuery Mobile、PhoneGap 和 Django 实现的移动 Web 应用程序实现首次登录方案?的主要内容,如果未能解决你的问题,请参考以下文章

iPhone JQuery:如何使用 iPhone 中的 Jquery Mobile + phone gap 在 iPad 中实现拆分视图

Windows Phone 上的 JQuery Mobile 滑动事件

jQuery Mobile无法在PhoneGap Windows Phone 8中运行

JQuery Mobile+Phone Gap:如何实现包含 2 个部分的(表)列表视图

使用 phone gap 和 jQuery mobile 在 iOS 应用中实现 ZOOM IN 和 ZOOM OUT

jQuery-验证require_from_group并按名称选择