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

如何从 ionic/cordova/phonegap 中的布局截取屏幕截图?

ionic/cordova 应用程序中 IOS 10.3.3 中的屏幕闪烁问题

跟踪 Ionic 应用中的 Facebook 应用安装

Gradle,Gradle 包装器在 Android Studio 中的不同实例 by ionic cordova

如何使用 Ionic / Cordova 在 iOS 上启用多任务处理?