2017-10-07 2 views
0

Bonjour J'essayais d'implémenter passport-jwt sur ma webapp. Mais ça ne marchera pas, j'ai vu plusieurs même poste et essayé ce qu'ils ont fait, mais sur mon cas, il n'a pas fonctionné.Passeport Jwt non autorisé

voici Authenticating node API with passport-jwt

passport local strategy not getting called

Passport-jwt Unauthorized

J'ai essayé ceux-ci et il n'a pas travaillé. Voici mon code sur mes passport.js

var config = require('./config'); 

var JwtStrategy = require('passport-jwt').Strategy, 
    ExtractJwt = require('passport-jwt').ExtractJwt; 
module.exports = 
    function(passport){ 
     var opts ={}; 
     opts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken(); 
     opts.secretOrKey = config.secret; 
      passport.use(new JwtStrategy(opts,function(jwt_payload,done){ 
       console.log('HERE'); 
       console.log(jwt_payload); 
       User.findOne({id:jwt_payload._id},function(err,user){ 
        if(err) 
         return done(err,false); 
        if(user) 
         return done(null,user); 
        else 
         return done(null,false); 
         }) 

        })); 
      }; 

il ne sera pas même atteindre le console.log('HERE');

et voilà comment je produis mon jeton

router.post('/login',function(req,res,next){ 
    var username = req.body.username; 
    var password = req.body.password; 
    User.findUser(username,function(err,user){ 
     if(err) return res.json({success:false,msg:"Error"}); 
     if(!user) return res.json({success:false,msg:"No Such user"}); 
     //res.json(user); 
     console.log(user); 
     if(user){ 
      User.comparePass(password,user.password,function(err,IsMatched){ 
       if(err) return res.json({success:false,msg:'error}); 
       if(!IsMatched) return res.json({success:false,msg:"wrong password"}); 
       if(IsMatched){ 
        var token = jwt.sign(user.toObject(),config.secret,{expiresIn:604800}); 
        res.json({success:true,token:'JWT '+ token, 
          user:{ 
           name:user.name, 
           username:user.username, 
           password:user.password, 
           email:user.email, 
           contact:user.contact, 
           address:user.address 
          } 
        }); 

       } 
      }); 
     } 
    }); 
}); 

et voici ce que im essayant d'accès

router.get('/profile',passport.authenticate('jwt',{session:false}), function(req, res, next) { 
    res.json({user:req.user}); 
}); 

Merci!

Répondre

0

Ok, je l'ai compris.

ExtractJwt.fromAuthHeaderWithScheme('jwt') 

au lieu de

ExtractJwt.fromAuthHeaderAsBearerToken();