JwtStrategy требует функции для извлечения JWT из запросов - PullRequest
0 голосов
/ 02 июля 2018

При попытке извлечь токен JWT из заголовка авторизации я получил следующую ошибку:

TypeError: JwtStrategy requires a function to retrieve jwt from requests (see 
option jwtFromRequest)
at new JwtStrategy (C:\MEANauth app\node_modules\passport-jwt\lib\strategy.j
s:55:15)
at module.exports (C:\MEANauth app\config\passport.js:10:15)
at Object.<anonymous> (C:\MEANauth app\app.js:37:29)
at Module._compile (module.js:643:30)
at Object.Module._extensions..js (module.js:654:10)
at Module.load (module.js:556:32)
at tryModuleLoad (module.js:499:12)
at Function.Module._load (module.js:491:3)
at Function.Module.runMain (module.js:684:10)
at startup (bootstrap_node.js:187:16)
at bootstrap_node.js:608:3

Это код для passport.js:

const JwtStrategy = require("passport-jwt").Strategy;
const ExtractJwt = require("passport-jwt").ExtractJwt;
const User=require("../models/user");
const config = require("../config/database");
module.exports = function(passport){
    let opts = {};
    opts.JwtFromRequest = ExtractJwt.fromAuthHeaderWithScheme("jwt");
    opts.secretOrKey = config.secret;
    passport.use(new JwtStrategy(opts,function(jwt_payload,done){//here it points for error
        User.getUserById(jwt_payload._id, function(err,user){
            if(err){
                return done(err, false);
            }

            if(user){
                return done(null, user);
            }
            else{
                return done(null, false);
            }
        });
    }));
}      

app.js: это основной файл

const passport =require("passport");

вот промежуточный паспорт

//passport middleware
app.use(passport.initialize());
app.use(passport.session());

// вот утверждение, которое оно указывает на ошибку

require('./config/passport')(passport);

1 Ответ

0 голосов
/ 05 июля 2018

Просто измените «J» на «j» в opts.JwtFromRequest:

opts.jwtFromRequest =ExtractJwt.fromAuthHeaderWithScheme("jwt");
...