Я использую passport-jwt с "jwt" в качестве стратегии. Когда я вручную предоставляю заголовок авторизации в почтальоне, мой код работает правильно для почтальона. Но когда я проверяю то же самое в моем браузере в то время, когда он выбрасывает " «Несанкционированная» ошибка может быть из-за несоблюдения токена. Я новичок в 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.'});}
});
};