我正处于使用jQuery Mobile开发移动网络应用程序的早期(预编码)阶段(我们查看了Sencha Touch几周,但jQuery Mobile更适合我们的团队能力)。我用PhoneGap包装jQuery Mobile Web应用程序来创建iPhone,iPod touch和iPad native-ish应用程序。我将Django用于我们的Web应用程序,因此打算在服务器端执行相同的操作,并为移动应用程序和服务器之间的接口提供某种JSON / Ajax / REST数据流。由于它是一个仅限移动设备的应用程序,因此我们应该可以访问所有HTML5类的内容。
虽然我可能会针对此实施提出其他问题/问题,但这是我当前的问题:
我需要设置应用程序,以便用户第一次打开应用程序时,必须输入用户名和密码进行身份验证。随后,用户不必进行身份验证,除非用户单击“设置”链接,该链接为他们提供了使用其他帐户或密码进行身份验证的页面。应用程序每次启动时仍应使用最初输入的用户名和密码对服务器进行身份验证,以确保帐户未被禁用或密码已更改或其他内容。
我对身份验证方案很陌生。我该怎么办?
答案 0 :(得分: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
身份验证检查。
答案 1 :(得分:4)
我建议不要存储在HTML5本地/网络存储中。如果您的目标是iOS PhoneGap,我建议您使用Keychain插件: http://blogs.nitobi.com/shazron/2010/11/06/ios-keychain-plugin-for-phonegap/
答案 2 :(得分:4)
KeyChain解决方案仅适用于iOS设备,因此,如果这是您唯一的目标,那么您就可以了。
但其他人呢?使用PhoneGap浪费,然后只部署到一个框架...
我知道localStorage不安全,但是如果你意识到这些限制,那么有一些方法可以减少“显而易见”。
这里的jQuery.handleStorage plugin也处理AES加密......您可以查看源代码并仅实现您需要的部分(如果您不想使用整个插件,也支持桌面浏览器!)。
PS:我不以任何方式加入该插件或作者
答案 3 :(得分:1)
这是我使用PhoneGap开始移动开发时遇到的一个亟待解决的问题。让我解释一下我要做的事情。
当用户尝试登录时,他/她输入的用户名和密码将通过Web服务调用发送到服务器端。如果验证成功,则向用户发出令牌并将其保存在服务器端以供将来通信。用户将收到令牌,它将保存在本地存储或您喜欢的任何机制中。
现在,为了将来的通信使用令牌,令牌将与服务器端的每个Web服务调用一起传递,服务器将验证令牌是否是服务器发出的有效令牌。您可以按照要求(或未过期)每72小时或48小时使令牌无效。令牌失效后,您必须登录并获得新令牌。
希望这可以解决您的问题。
答案 4 :(得分:-1)
尝试 HTTP Authentication with HTML Forms ,看看它是否有帮助。
答案 5 :(得分:-1)
它说将PHP文件包含在HTML文件中,但我不确定PhoneGap是否可以与PHP一起使用。我本周末才开始使用PhoneGap。