【问题标题】:ExpressJS API Token AuthenticationExpressJS API 令牌认证
【发布时间】:2026-01-06 17:50:01
【问题描述】:

我正在使用ExpressJS 并试图找出我在 iPhone 应用程序发送请求时对用户进行身份验证的最佳(也是最安全)的方式。

  1. 我应该使用PassportJSPassport Bearer strategy 来登录用户并验证用户吗?
  2. 在 Passport Bearer 策略工作示例here 中,它表明他们通过作为User 对象一部分的令牌来查找用户。我假设这意味着我会将用户使用的令牌作为列存储在Users 表中?
  3. 标准是否也使用带有令牌身份验证的会话?如果这是标准,我是否应该让客户端传入 sessionId,并以这种方式搜索用户?
  4. 出于安全原因,我是否还应该让客户端传入一个 privateKey,它会根据存储在我的配置文件中的 privateKey 进行检查

【问题讨论】:

    标签: node.js express oauth passport.js bearer-token


    【解决方案1】:

    1) 是的,你可以走那条路

    2) 你可以这样做,但今天我猜每个人都在使用 JWT (jwt.io),它基本上是其中包含数据的令牌,所以基本上你可以使用这些令牌进行身份验证,甚至无需查询数据库。在令牌中,您甚至可以拥有权限范围,并在每次需要经过身份验证的操作时检查它们。示例:https://github.com/DevAlien/Axolot/blob/master/lib/helper.js

    3) 如果您使用令牌身份验证,我不会使用 Sessions。你不需要状态。

    4) 我猜不是

    【讨论】:

      【解决方案2】:

      看这里:https://www.npmjs.com/package/tokens2 Tokens2 是一个基于令牌的身份验证模块,它基于两个令牌工作: 1- json web 令牌 (jwt) 确保使用的登录是有效用户 2- 访问令牌确保用户不会失效 该协议基于短时间的 jwt 令牌工作。访问令牌保存在数据库中,除非我们使用户无效,否则该数据库永不过期。 JWT 遭受令牌失效的困扰,并且对移动用户有严重的问题。

      【讨论】: