首页 > 解决方案 > 由于 async-await,我在 JWT 令牌验证中遇到了一些错误

问题描述

我目前正在学习制作API,所以我需要学习的最后一部分是JWT令牌验证以授权路由。我的身份验证工作正常,但我需要传递响应用户的数据。

我尝试过的代码有一些我无法理解的错误,但我认为我搞砸了异步等待部分。当我打电话时,User.findById(jwt_payload.user._id)我必须获取用户的数据,目前我得到空值。我被困在那部分没有解决它的线索。

const JwtStrategy = require('passport-jwt').Strategy;
const ExtractJwt = require('passport-jwt').ExtractJwt;
const { User } = require('../models/user');
const config = require('../config/database');

module.exports = async function(passport){
   let opts = {};
   opts.jwtFromRequest = ExtractJwt.fromAuthHeaderWithScheme('jwt');
   opts.secretOrKey = config.secret;
   passport.use(new JwtStrategy(opts, async function(jwt_payload, done){
   //console.log(jwt_payload.user._id);
   const user = await User.findById(jwt_payload.user._id);
   //console.log(user);
   if(user){
        return done(null,user);
    }
    else{
        return done(null,false);
    }
 }));
}

如果有人帮助我理解我所犯的错误部分,我将不胜感激

标签: node.jsexpressmongoosejwtpassport.js

解决方案


推荐阅读