2011-06-04 29 views
14

我在使用jQuery Mobile(我们在Sencha Touch几周看过,但jQuery Mobile更适合我们团队的能力)开发移动Web应用程序的早期阶段(预编码)。我正在用PhoneGap包装jQuery Mobile web应用程序来创建iPhone,iPod touch和iPad原生应用程序。我为我们的Web应用程序使用Django,因此打算在服务器端执行相同的操作,为移动应用程序和服务器之间的接口提供某种类型的JSON/Ajax/REST数据流。由于这是一款仅限移动设备的应用程序,因此我们应该可以访问所有HTML5类型的内容。如何为使用jQuery Mobile,PhoneGap和Django实现的移动Web应用程序实现首次登录方案?

虽然我可能会拿出这个实现其他问题/疑问,这里是我当前的问题/问题:

我需要让第一次用户打开应用程序设置应用程序,他们必须输入用户名和密码才能进行身份验证。随后,用户不需要进行认证,除非用户点击“设置”链接,使他们有一个页面可以使用不同的帐户或密码进行认证。每次启动时,应用程序仍应使用当前输入的用户名和密码对服务器进行身份验证,以确保该帐户未被禁用或密码已更改。

我对身份验证方案很新颖。我该怎么办?

回答

4

我建议不要存储在HTML5本地/网络存储。如果你的目标iOS的PhoneGap的,我会建议使用钥匙串插件: http://blogs.nitobi.com/shazron/2010/11/06/ios-keychain-plugin-for-phonegap/

+0

感谢您的回答。 。 。如果这项工作正常,我会将其标记为已接受! – 2011-07-09 02:30:23

+0

我们结束了使用你的插件和它的工作到目前为止。 (我相信我的同事发送了一个味精问你一个问题,你有帮助的回答)。虽然我们认为使用localStorage不会是世界末日,但考虑到应用程序的打包方式以及我们打算限制分发的方式,但是要使用keychain以正确的方式进行操作! – 2011-08-07 06:24:05

+0

(请注意,这仅适用于iOS,不适用于其他PhoneGap部署) – 2012-11-03 19:36:57

-1

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

+0

感谢您的链接,但是仅基于这段摘录:“这项技术适用于IE6和Firefox,但已知不适用于Opera和Safari,因此如果您关心这些浏览器,您可能需要再次考虑使用这(或花一些时间来研究为什么它在这些浏览器中失败)。“我猜这不是我想为我的手机应用程序追求的东西;另外,它没有解决我的“首次登录”登录要求。 。 。希望我能得到更多的答案! :) – 2011-06-05 00:04:04

-1

它说要将一个PHP文件包含到HTML文件中,但我不确定PhoneGap是否适用于PHP。本周末我刚开始使用PhoneGap。

+0

你有一个“它”的链接(这是说这件事的事情)。我目前没有计划使用任何PHP(因为我在服务器端使用python/django/wsgi) 。 – 2011-06-05 00:08:36

+0

我被告知将PHP文件存储在您的服务器中,然后使用AJAX进行信息交易。 – 2011-06-05 23:21:20

4

虽然你不打算与Sencha Touch,但有一个很好的问题概述在HTTP Authentication

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

4

钥匙链解决方案将在iOS设备上才有效,所以如果这是你唯一的目标,你的罚款。

但是其他的呢?使用PhoneGap的一种浪费,但然后部署只有一个框架...

我知道localStorage是不安全的,但如果你意识到的局限性有办法让少一点“显而易见”。

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

PS:我没有以任何方式该插件或作者

+0

您也可以使用更新,更灵活的版本,它不需要绑定a来形成https://github.com/jas-/ secStore.js – 2014-01-08 13:24:33

1

这是燃烧的问题,我有,当我开始移动开发与PhoneGap的一个附属。让我解释我所做的事情。

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

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

希望这可以解决您的问题。

相关问题