Ionic/Cordova 应用程序中的身份验证
Posted
技术标签:
【中文标题】Ionic/Cordova 应用程序中的身份验证【英文标题】:Authentication in Ionic/Cordova App 【发布时间】:2014-04-05 13:53:50 【问题描述】:首先,我不是专业人士。
为了成为更好的开发人员,我试图了解需要什么以及如何为 Ionic-Framework 应用创建注册/登录。
大多数单页应用程序 (SPA) 在节点服务器上处理身份验证,该节点服务器也为客户端提供 html。在我的情况下,手机本身将提供 HTML,所以我猜我可能会遇到一些 CORs 问题。
我了解 Ionic-Framework 使用状态并基于 angular-client-side-auth 存储库,每当我在应用程序中更改状态时,我都应该进行身份验证。
我有一个初始的应用程序设置,但现在我有点困惑从这里去哪里。
我可以使用的工具:
Node.JS 服务器 - 感谢 DigitalOcean(我应该使用它作为我的数据库的代理吗?) CouchDB 服务器(我们来了全栈)我的问题:
-
使用混合应用时进行身份验证的标准方法是什么?
我应该使用 Node.JS 作为数据库的代理吗?
是否应该跳过 node.js 并直接使用 CouchDB 服务器进行身份验证? (我听说过)
我是不是走错了路?
我的潜在障碍是什么?
CORS 如何与混合应用程序配合使用?
我缺少什么吗?
感谢您帮助我成为更好的开发人员。
【问题讨论】:
【参考方案1】:nathvarun 给出了非常完整的答案,但我想分享一下我在应用中进行身份验证的步骤。
-
通过 ajax 发送
email
+ password
到服务器
在服务器中生成token
并将其发送回应用程序
将email
+ token
存储在localStorage
中
对于我向服务器发出的每一个请求,我都会通过POST
发送email
+ token
在服务器中,我使用该令牌验证该用户的真实性,如果 true
执行该方法,如果 false
我向应用发送错误 (401)
如果应用收到成功,那么没关系,如果收到错误我重定向到登录屏幕。
很好的是,当应用程序打开时,您可以从localStorage
获取email
+ token
,发送到服务器,如果该令牌对该用户来说可以,则重定向到主屏幕,否则重定向登录。然后,每当用户清除应用程序的缓存时,他就会被重定向到登录屏幕。
【讨论】:
谢谢@Lucas。正是我想要的。 @LucasGarcia,我发现你的回答很有趣,我有一些问题要问。你如何创建令牌?您是否将创建的令牌保存到数据库中?在存储到 localStorage 之前,您会加密或散列电子邮件吗? @c.k 我的后端在 Rails 中,我在模型中生成一个十六进制代码并将其存储到数据库中,但我会根据用户提出的每个请求进行更改。并且邮件在 localStorage 中没有加密,但这可能是安全漏洞【参考方案2】:对于我正在开发的一些应用程序,我实际上需要类似的东西。我花了相当长的时间对此进行调查,并且能够做到这一点。
我对结果非常满意,除了电子邮件/密码身份验证之外,我还添加了一些社交身份验证,其工作方式相同。
-
在客户端打开 url,使用提供商的 (facebook/twitter/instagram) url 进行登录
用户登录后被重定向到服务器的回调url(我的服务器是用nodejs写的)
一旦我从提供商那里获得了访问令牌。我保存此令牌,然后为客户端创建一个令牌,以便在用户每次想要访问受保护的资源时重复使用。
下载apk并进行测试。
如果这是您要查找的内容,您可以在以下位置查看两个客户端代码:https://github.com/malikov/Authenticate.me-client-cordova-ionic
服务器端代码在:https://github.com/malikov/Authenticate.me-Node-Server
【讨论】:
你还在这样干吗?第 3 步,当你说你保存令牌,然后创建一个令牌供客户端重用时,你是什么意思?以上是关于Ionic/Cordova 应用程序中的身份验证的主要内容,如果未能解决你的问题,请参考以下文章
如何从 ionic/cordova/phonegap 中的布局截取屏幕截图?
ionic/cordova 应用程序中 IOS 10.3.3 中的屏幕闪烁问题