node.js - Passport JWT 策略提取选项

标签 node.js authentication jwt passport.js passport-local

使用 Passport JWT 策略,我通过 params 传递 token ,并像这样提取 token ExtractJWT.fromUrlQueryParameter('secret_token')

但有时我通过 header 传递 token ,我想像这样提取它 ExtractJWT.fromHeader('secret_token')

我如何检查它是如何被传递下来的并使用正确的动态提取方法

这是我的代码:

passport.use(new JWTstrategy({
  secretOrKey: process.env.AUTH_SECRET,
  jwtFromRequest: ExtractJWT.fromUrlQueryParameter('secret_token')

}, async (token, done) => {
  try {
    //Pass the user details to the next middleware
    return done(null, token.user);
  } catch (error) {
    done(error);
  }
}));

谢谢!我已经研究了很长时间....

最佳答案

使用ExtractJwt.fromExtractors()方法

var jwtStrategy = new JwtStrategy({
// this will try to extract from Query parm, header and Authheader
  jwtFromRequest: ExtractJwt.fromExtractors([ExtractJwt.fromUrlQueryParameter("secret_token"), ExtractJwt.fromHeader("secret_token"), ExtractJwt.fromAuthHeaderAsBearerToken()]),
//here we have defined all possible extractors in an array
  secretOrKey: process.env.AUTH_SECRET
}, async (payload, done) => {
  ...
});

关于node.js - Passport JWT 策略提取选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53880503/

相关文章:

javascript - 为什么我无法从 Node JS 的 http 服务器获得前几个响应?

javascript - 使用 AJAX/jQuery 在网络摄像机上进行 HTTP 基本授权

facebook - 我可以仅使用 Facebook 签名请求安全地验证 Facebook 用户吗?

c# - 可以登录本地组织

reactjs - React-Redux-SimpleJWT - 类型错误 : logout is not a function

javascript - multipart/form-data - 手动获取文件信息

javascript - 如何在 docuSign 中签名完成后重定向到后面

reactjs - 构建安全 JWT 身份验证流程的指南?

javascript - 在 PEG.js 语法中使用 Node.JS 语句

asp.net-mvc - UseJwtBearerAuthentication 在 token 过期时返回 HTTP 500