Аутентификация Passport-JWT с не авторизованным nodejs - PullRequest
0 голосов
/ 28 июня 2018

Я новичок в nodejs. Мне нужно создать и аутентификации с помощью nodejs. Здесь я нашел несколько ответов, но они также использовали старую версию. Здесь я использую эти версии enter image description here

Я использовал этот код для создания файла passport.js в моем приложении узла.

const JwtStrategy = require('passport-jwt').Strategy,
ExtractJwt = require('passport-jwt').ExtractJwt;
const config = require('./db');
const User = require('./models/user');


const opts = {};
opts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();
opts.secretOrKey = config.secret;

module.exports = (passport)=>{
    passport.use(new JwtStrategy(opts, function(jwt_payload, done) {
        User.findUserbyId({_id: jwt_payload._doc._id}, function(err, user) {
            if (err) {
                return done(err, false);
            }
            if (user) {
                return done(null, user);
            } else {
                return done(null, false);
            }
        });
    }));
};

И я использовал этот метод маршрутов для создания маршрута с Аутентификацией.

router.post('/profile', 
    passport.authenticate('jwt'),{ session: false },
     (req, res)=> {
    res.json({user:req.user});
 });

Я использовал почтальон для создания токена и проверки подлинности. enter image description here

Я не могу понять, почему это неправильно. Метод findUserById является следующим

module.exports.findUserbyId = (id, callback)=>{
  User.findOne(id, callback);
}

В чем проблема в моем коде? Почему это каждый раз дает

Несанкционированный

в моем приложении почтальона.

...