67

首先,我不是专业人士。

为了成为更好的开发人员,我试图了解需要什么以及如何完成为 Ionic-Framework 应用程序创建注册/登录。

大多数单页应用程序 (SPA) 在节点服务器上处理身份验证,该节点服务器也为客户端提供 HTML。在我的情况下,手机本身将提供 HTML,所以我猜我可能会遇到一些 CORs 问题。

我了解 Ionic-Framework 使用状态和基于angular-client-side-auth 的repo,每当我在我的应用程序中更改状态时,我都应该进行身份验证。

我有一个初始的应用程序设置,但现在我有点困惑从这里去哪里。

我可以使用的工具:

  • Node.JS 服务器 - 感谢 DigitalOcean(我应该使用它作为我的数据库的代理吗?)
  • CouchDB 服务器(我们来了全栈)

我的问题:

  1. 使用混合应用程序时进行身份验证的标准方法是什么?
  2. 我应该使用 Node.JS 作为数据库的代理吗?
  3. 我应该跳过 node.js 并直接使用 CouchDB 服务器进行身份验证吗?(我听说过这个)
  4. 我是不是走错了路?
  5. 我的潜在障碍是什么?
  6. CORS 如何与混合应用程序一起使用?
  7. 有什么我想念的吗?

感谢您帮助我成为更好的开发人员。

4

2 回答 2

46

nathvarun 给出了一个非常完整的答案,但我想分享我在我的应用程序中进行身份验证的步骤。

  1. 通过ajax发送email+到服务器password
  2. 在服务器中生成一个token并将其发送回应用程序
  3. 存储email+tokenlocalStorage
  4. 对于我向服务器发出的每一个请求,我发送email+token通过POST
  5. 在服务器中,我使用该令牌验证该用户的真实性,如果true执行该方法,如果false我向应用程序发送回错误 (401)
  6. 如果应用程序收到成功,那么没关系,如果收到错误我重定向到登录屏幕。

好消息是,当应用程序打开时,您可以从email+中token获取localStorage,发送到服务器,如果该令牌对该用户来说是可以的,则重定向到主屏幕,否则重定向到登录。然后,每当用户清除应用程序的缓存时,他就会被重定向到登录屏幕。

于 2014-09-01T14:34:17.950 回答
1

对于我正在开发的一些应用程序,我实际上需要类似的东西。我花了相当长的时间对此进行调查,并且能够做到这一点。

我对结果非常满意,除了电子邮件/密码身份验证之外,我还添加了一些以相同方式工作的社交身份验证。

  1. 使用提供商的(facebook/twitter/instagram)网址在客户端打开网址以进行登录
  2. 用户登录并被重定向到服务器的回调 url(我的服务器是用 nodejs 编写的)
  3. 一旦我从提供商那里获得了访问令牌。我保存此令牌,然后为客户端创建一个令牌,以便在用户每次想要访问受保护的资源时重用。

下载apk并测试它。

如果这是您正在寻找的内容,您可以在以下位置查看客户端代码:https ://github.com/malikov/Authenticate.me-client-cordova-ionic

服务器端代码位于:https ://github.com/malikov/Authenticate.me-Node-Server

于 2014-09-15T21:36:33.487 回答