【问题标题】:How to do authentication for an API build with express?如何使用 express 对 API 构建进行身份验证?
【发布时间】:2015-10-27 00:09:56
【问题描述】:

那里有很多关于身份验证和节点的示例和教程,还有一些关于 stackoverflow 的问题。但是,当我尝试为与 SPA 通信的 API 实现身份验证时,我仍在努力解决这个问题。我尝试使用 mean.js 作为示例以及使用 JWT 和 passport.js。但即使经过几天的研究和反复试验,我仍然不清楚如何实现以下场景:

  1. 用户使用用户名(或电子邮件)和密码注册自己(并收到电子邮件以验证其帐户)
  2. 用户使用密码和用户名登录。
  3. 用户收到一个令牌作为响应
  4. 令牌用于以下所有需要身份验证的请求(并在给定时间后失效)。
  5. 如果用户注销,令牌将失效,他会在下次登录时获得一个新令牌。

稍后我还想实现 Facebook 和 Google 登录(这就是我想使用 passport.js 的原因)。

我很高兴能得到任何帮助,并愿意接受有关更好的身份验证流程的建议。

【问题讨论】:

    标签: node.js authentication express passport.js single-page-application


    【解决方案1】:

    调查 Firebase (https://www.firebase.com/)。它简化了处理 Auth 的过程以及尝试自己处理 Auth 的所有风险。

    Firebase 还支持所有开箱即用的主要身份验证提供程序(Facebook、Google、Twitter 等)。

    【讨论】:

    • 感谢您的推荐。不过,Firebase 并不是我所需要的,而且与我的要求无关。
    【解决方案2】:

    我最终使用了satellizer 的节点示例: https://github.com/sahat/satellizer/blob/master/examples/server/node/server.js#L36

    您在注册时将密码和用户名存储到数据库中。

    对于登录,您可以简单地将(散列的)密码与经过验证的密码进行比较,然后通过jwt.encode (jsonwebtoken) 发回您创建的令牌。

    之后,您将令牌附加到您的请求(在标头中可能是最好的方法)并通过jwt.decode(token, TOKEN_SECRET)检查其有效性

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-28
      • 2021-05-04
      • 1970-01-01
      • 2022-08-23
      • 1970-01-01
      • 1970-01-01
      • 2014-12-01
      • 1970-01-01
      相关资源
      最近更新 更多