Este es el archivo authenticate.js que verificará al usuario.
const passport=require('passport'); const LocalStrategy=require('passport-local').Strategy; const User=require('./models/user'); const JwtStrategy=require('passport-jwt').Strategy; const ExtractJwt=require('passport-jwt').ExtractJwt; const jwt=require('jsonwebtoken'); const config=require('./config'); passport.use(new LocalStrategy(User.authenticate())); passport.serializeUser(User.serializeUser()); passport.deserializeUser(User.deserializeUser()); exports.getToken=function(user){ return jwt.sign(user,config.secretKey,{expiresIn:3600}); }; var opts={}; opts.jwtFromRequest=ExtractJwt.fromAuthHeaderAsBearerToken(); opts.secretOrKey=config.secretKey; exports.jwtPassport=passport.use(new JwtStrategy(opts,(jwt_payload,done)=>{ console.log("JWT payload:",jwt_payload); User.findOne({_id:jwt_payload._id},(err,user)=>{ if(err){ return done(err,false); } else if(user){ return done(null,user); } else{ return done(null,false); } }); })); exports.verifyUser=passport.authenticate('jwt',{session:false}); exports.verifyAdmin=function(req,res,next){ User.findOne({_id:req.user._id}) .then((user)=>{ console.log("User:",user); if (user.admin) next(); else { err = new Error('You are not authorized to perform this operation!'); err.status = 403; return next(err); } },(err)=>next(err)) .catch((err)=>next(err)) };`esta es la ruta user.js /login donde el usuario puede enviar la solicitud POST para iniciar sesión
router.post('/login',cors.corsWithOptions,passport.authenticate('local'),(req,res)=>{ var token=authenticate.getToken({_id:req.user._id}); res.statusCode=200; res.setHeader('Content-Type', 'application/json'); res.json({ success: true,token: token, status: 'You are succesfullly logged in!' }); 
Solía funcionar, pero ahora POSTMAN muestra NO AUTORIZADO en credenciales válidas.
Solía funcionar, pero ahora POSTMAN muestra NO AUTORIZADO en credenciales válidas.