从回调中访问 jwtFromRequest

Posted

技术标签:

【中文标题】从回调中访问 jwtFromRequest【英文标题】:Access jwtFromRequest from callback 【发布时间】:2019-09-05 17:26:34 【问题描述】:

我正在学习 passport.jsJWT 策略,我想创建一个系统来注销用户。

我想这样处理:

    当用户注销时,他的令牌存储在我的数据库中,名为InvalidTokens 的表中 每次用户发出受保护的请求时,我都想检查他的令牌是否在表中 InvalidTokens

问题是我不知道如何访问下面代码中的字段jwtFromRequest

// passport.js
// File where I store my authentication strategies

// ...

/**
 * Use JWT strategy for all the other requests that need authentication on the
 * server 
 */
var opts = 
  jwtFromRequest: ExtractJWT.fromAuthHeaderAsBearerToken(),
  secretOrKey: 'secret',


passport.use('jwt', new JWTStrategy(
  opts,
  async (jwtPayload, done) => 
    try 
      const token = await TokenInvalide.findOne(
        where: 
          Token: '<token_value_I_can\'t_reach>',
        
      )

      if (token !== null)
        return done(null, false);

      return done(null, jwtPayload.idUtilisateur);

     catch (e) 
      console.log(e);
      return done(null, false);
    
  
));

【问题讨论】:

【参考方案1】:

According to the doc 您可以通过将passReqToCallback 设置为true 将request 对象传递给回调

还没有测试过,但应该是正确的方向

var opts = 
  jwtFromRequest: ExtractJWT.fromAuthHeaderAsBearerToken(),
  secretOrKey: 'secret',

  passReqToCallback: true // <----- Add this



passport.use('jwt', new JWTStrategy(
  opts,
  async (req, jwtPayload, done) => 

    const rawJWTToken = req['Authorization'].split(' ')[1]

    ...
  
));

【讨论】:

以上是关于从回调中访问 jwtFromRequest的主要内容,如果未能解决你的问题,请参考以下文章

如何从回调中访问此类成员?

Python:Twisted:如何从回调中访问列表

Tensorflow 2.0:从回调中访问批次的张量

从 React 访问脚本标签回调 - AmazonPay

从回调访问“this”范围变量

从回调返回值或在 node.js 中的特定回调之外访问它?