护照jwt在邮递员中工作,但在浏览器中未经授权

时间:2019-03-06 13:20:24

标签: node.js passport.js passport-jwt

我使用的是带有“ jwt”的passport-jwt作为策略。当我在邮递员中手动提供Authorization标头时,我的代码对于邮递员而言是正确的。但是当我当时在浏览器中测试相同的东西时,它将抛出“我可能是新来的passport-jwt,所以我不知道为什么它在邮递员中工作而在浏览器中不工作,所以我并没有确切的问题。

我的代码如下:

//passport.js

var JwtStrategy = require('passport-jwt').Strategy,
ExtractJwt = require('passport-jwt').ExtractJwt;

var user = require('../models/user.model');
var config = require('../db/config');

module.exports = function(passport) {
var opts = {};
opts.jwtFromRequest = ExtractJwt.fromAuthHeaderWithScheme('jwt');

opts.secretOrKey = config.secret;
passport.use(new JwtStrategy(opts, function(jwt_payload, done) {
    console.log(jwt_payload);
    user.findOne({id: jwt_payload._id}, function(err, user) {
        if (err) {
            return done(err, false);
        }
        if (user) {
            console.log("FOUND");
            done(null, user);
        } else {
            done(null, false);
        }
    });
 }));
};

我的路线api调用了一个如下所述的控制器:

//route.js
router.post('/saveBook', passport.authenticate('jwt',
{ session: false}),autController.saveBook);

控制器文件:

var mongoose1 = require('../db/db');
var passport = require('passport');
var config = require('../db/config');
require('../db/passport')(passport);
var user = require('../models/user.model');
var Book = require('../models/book.model');
var jwt = require('jsonwebtoken');
var bcrypt = require('bcrypt');
var path = require('path');

exports.saveBook =  function(req, res)  {
console.log(req.headers);

  var newBook = new Book();
  newBook.isbn=req.body.isbn;
  newBook.title= req.body.title;
  newBook.author= req.body.author;
  newBook.publisher= req.body.pub;

  newBook.save(function(err) {
    if (err) {
      console.log(err);
    }else {
    res.json({success: true, msg: 'Successful created new book.'});}
  });
};

0 个答案:

没有答案