gpt4 book ai didi

passport.js - Passport JWT & Authorize vs Authenticate

转载 作者:行者123 更新时间:2023-12-04 04:04:35 30 4
gpt4 key购买 nike

Passport 似乎是简单例份验证、不显眼且不难设置的绝佳选择。我正在构建一个使用 JWT 进行身份验证的 MEAN 堆栈,因此我查看了 Passport JWT。然而,有几件事我很困惑。

1) 假设 Passport JWT 仅用于验证请求,而不用于生成有效的 jwt,我是否正确?也就是说,它是否应该仅用于验证 token 的存在?

2) passport.authorize有什么区别和 passport.authenticate ?我什么时候应该使用一个?

3) 我有 3 条路线用于身份验证相关事宜,login , signup , 和 authenticate .
login将检查用户电子邮件/密码组合是否存在并匹配,然后为客户端生成 token 。signup将检查以确保电子邮件不存在,然后为客户端生成 token 。
现在为 authenticate这是我有点混淆的地方。我什至需要一个 authenticate如果我已经有路线 loginsignup ?如果有的话,似乎身份验证将是我传递给 passport.use 的函数。对于 JWT 策略,然后是 loginsignup可能添加 verify_token路由将是我唯一未 protected 路由,其他所有路由都会调用 passport.authenticatepassport.authorize .

最佳答案

  • 正确的。 Passport JWT (passport-jwt) 仅用于验证请求。您将需要另一个工具来实际生成 token 。 This tutorial使用 JWT Simple (jwt-simple) 并且我使用过 jsonwebtoken (每 this reference)。
  • 我没有看到任何对 passport.authorize 的引用, 所以我相信 passport.authenticate就是你要找的。 passport.authenticate是您将在路由中用于验证传入请求是否具有 JWT token 并被允许的内容。
  • 由于您通过 login 生成 token 和 signup , authenticate是多余的和不必要的。只要确保您使用 passport.authenticate在您的 route 验证请求期间的访问。

  • 这里要记住的一般设置步骤是:
  • Passport -jwt用于身份验证
  • 您需要另一个工具来创建 JWT token
  • 您生成并返回给任何发出请求的 JWT token 需要出现在后续请求的 header ( "Authorization: JWT eyJ0eXAiO..." ) 中
  • you need to setup your JWT strategy and tell passport to use it
  • 使用 passport.authenticate通过传入请求 header 中的 JWT token 验证访问,例如:


  • router.post('/users', passport.authenticate('jwt', {session: false}), function(req, res) {
    // do something...
    });

    关于passport.js - Passport JWT & Authorize vs Authenticate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32941480/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com