[英]Passport Jwt Unauthorized
Hello I was trying to implement passport-jwt on my webapp.你好,我试图在我的 web 应用程序上实现护照 jwt。 But It wont work I've seen several same post and tried what they did but on my case it didnt worked.
但它不起作用我看过几个相同的帖子并尝试过他们所做的但在我的情况下它没有用。
here are some Authenticating node API with passport-jwt这是一些带有passport-jwt的身份验证节点API
passport local strategy not getting called 护照本地策略没有被调用
Passport-jwt Unauthorized Passport-jwt 未经授权
I've tried those and it didnt worked.我试过那些,但没有奏效。 Here is my code on my passport.js
这是我的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);
})
}));
};
It wont even reach the console.log('HERE');
它甚至不会到达
console.log('HERE');
and this is how I generate my token这就是我生成令牌的方式
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
}
});
}
});
}
});
});
and here is what im trying to access这是我试图访问的内容
router.get('/profile',passport.authenticate('jwt',{session:false}), function(req, res, next) {
res.json({user:req.user});
});
Thanks!谢谢!
Ok I've figured it out.好的,我想通了。
ExtractJwt.fromAuthHeaderWithScheme('jwt')
instead of代替
ExtractJwt.fromAuthHeaderAsBearerToken();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.