簡體   English   中英

護照 Jwt 未經授權

[英]Passport Jwt Unauthorized

你好,我試圖在我的 web 應用程序上實現護照 jwt。 但它不起作用我看過幾個相同的帖子並嘗試過他們所做的但在我的情況下它沒有用。

這是一些帶有passport-jwt的身份驗證節點API

護照本地策略沒有被調用

Passport-jwt 未經授權

我試過那些,但沒有奏效。 這是我的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);
                        })

                    }));
            };

它甚至不會到達console.log('HERE');

這就是我生成令牌的方式

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
                            }
                    });

                }
            });
        }
    });
});

這是我試圖訪問的內容

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

謝謝!

好的,我想通了。

ExtractJwt.fromAuthHeaderWithScheme('jwt')

代替

ExtractJwt.fromAuthHeaderAsBearerToken();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM