Passport jwt问题:jwt令牌可用于postman,但不可用于UI api调用

Passport jwt问题:jwt令牌可用于postman,但不可用于UI api调用,jwt,passport.js,Jwt,Passport.js,我已集成passport jwt以进行身份验证。它的工作方式很有魅力,但每当前端的家伙从前端angular 2使用它时,它就会给出未经授权的401。我试了很多次,但没有得到任何线索,这一定是一个愚蠢的错误 我的护照策略文件为 let JwtStrategy = require('passport-jwt').Strategy, ExtractJwt = require('passport-jwt').ExtractJwt; //let fromHeader = require('pass

我已集成passport jwt以进行身份验证。它的工作方式很有魅力,但每当前端的家伙从前端angular 2使用它时,它就会给出未经授权的401。我试了很多次,但没有得到任何线索,这一定是一个愚蠢的错误

我的护照策略文件为

let JwtStrategy = require('passport-jwt').Strategy,
    ExtractJwt = require('passport-jwt').ExtractJwt;
//let fromHeader = require('passport-jwt').fromHeader


// load up the user model
const User = require('../components/user/model');
const database = require('./database'); // get db config file
const config = require('./config'); // get db config file

module.exports = function(passport) {
//var passportStrategy = function(passport){
  let opts = {};
  opts.jwtFromRequest = ExtractJwt.fromAuthHeader();
  //opts.jwtFromRequest = ExtractJwt.fromAuthHeaderWithScheme("JWT");

  console.log("opts.jwtFromRequest==",opts.jwtFromRequest);

  opts.secretOrKey = config.secret;//config.secret;
  passport.use(new JwtStrategy(opts, function(jwt_payload, done) {
    //console.log("opt==",JSON.stringify(opt));
    //console.log("jwt_payload===",jwt_payload);
    User.findOne({_id: jwt_payload._doc._id}, function(err, user) {

          if (err) {
              return done(err, false);
          }
          if (user) {
              done(null, user);
          } else {
              done(null, false);
          }
      });
  }));
};
app.get("/api/user/getAll",
    passport.authenticate('jwt',{session:false}),
    userController.fetchUsers
);
logoutUser(token) {

//const userData = JSON.stringify(userInfo);

var headers = new Headers();


headers.append('Content-Type', 'application/json');

headers.append('Authorization', token); //e.g.token = JWT dasddddasdsda 

//headers.append('Authentication', token);

console.log(headers)



return this.http.post('http://localhost:9000/api/user/logout', { headers: headers })

.map((response: Response) =〉 {

return response.json()

})

.catch(this.errorHandler);

}
我的路线是

let JwtStrategy = require('passport-jwt').Strategy,
    ExtractJwt = require('passport-jwt').ExtractJwt;
//let fromHeader = require('passport-jwt').fromHeader


// load up the user model
const User = require('../components/user/model');
const database = require('./database'); // get db config file
const config = require('./config'); // get db config file

module.exports = function(passport) {
//var passportStrategy = function(passport){
  let opts = {};
  opts.jwtFromRequest = ExtractJwt.fromAuthHeader();
  //opts.jwtFromRequest = ExtractJwt.fromAuthHeaderWithScheme("JWT");

  console.log("opts.jwtFromRequest==",opts.jwtFromRequest);

  opts.secretOrKey = config.secret;//config.secret;
  passport.use(new JwtStrategy(opts, function(jwt_payload, done) {
    //console.log("opt==",JSON.stringify(opt));
    //console.log("jwt_payload===",jwt_payload);
    User.findOne({_id: jwt_payload._doc._id}, function(err, user) {

          if (err) {
              return done(err, false);
          }
          if (user) {
              done(null, user);
          } else {
              done(null, false);
          }
      });
  }));
};
app.get("/api/user/getAll",
    passport.authenticate('jwt',{session:false}),
    userController.fetchUsers
);
logoutUser(token) {

//const userData = JSON.stringify(userInfo);

var headers = new Headers();


headers.append('Content-Type', 'application/json');

headers.append('Authorization', token); //e.g.token = JWT dasddddasdsda 

//headers.append('Authentication', token);

console.log(headers)



return this.http.post('http://localhost:9000/api/user/logout', { headers: headers })

.map((response: Response) =〉 {

return response.json()

})

.catch(this.errorHandler);

}
和前端头追加如下:

let JwtStrategy = require('passport-jwt').Strategy,
    ExtractJwt = require('passport-jwt').ExtractJwt;
//let fromHeader = require('passport-jwt').fromHeader


// load up the user model
const User = require('../components/user/model');
const database = require('./database'); // get db config file
const config = require('./config'); // get db config file

module.exports = function(passport) {
//var passportStrategy = function(passport){
  let opts = {};
  opts.jwtFromRequest = ExtractJwt.fromAuthHeader();
  //opts.jwtFromRequest = ExtractJwt.fromAuthHeaderWithScheme("JWT");

  console.log("opts.jwtFromRequest==",opts.jwtFromRequest);

  opts.secretOrKey = config.secret;//config.secret;
  passport.use(new JwtStrategy(opts, function(jwt_payload, done) {
    //console.log("opt==",JSON.stringify(opt));
    //console.log("jwt_payload===",jwt_payload);
    User.findOne({_id: jwt_payload._doc._id}, function(err, user) {

          if (err) {
              return done(err, false);
          }
          if (user) {
              done(null, user);
          } else {
              done(null, false);
          }
      });
  }));
};
app.get("/api/user/getAll",
    passport.authenticate('jwt',{session:false}),
    userController.fetchUsers
);
logoutUser(token) {

//const userData = JSON.stringify(userInfo);

var headers = new Headers();


headers.append('Content-Type', 'application/json');

headers.append('Authorization', token); //e.g.token = JWT dasddddasdsda 

//headers.append('Authentication', token);

console.log(headers)



return this.http.post('http://localhost:9000/api/user/logout', { headers: headers })

.map((response: Response) =〉 {

return response.json()

})

.catch(this.errorHandler);

}

如果有人能帮助我进一步识别错误,那就太好了

post方法的第二个参数是有效负载

下面是代码

this.http.post('http://localhost:9000/api/user/logout“,{headers:headers})
一定是

this.http.post('http://localhost:9000/api/user/logout', {}, { headers: headers })