passport-jwt,不是错误的错误,但不是认证。甚至没有console.log

时间:2018-01-05 05:09:24

标签: express jwt passport.js

我正在尝试使用passport-jwt,express等进行身份验证。 我目前没有通过身份验证,但最令人不安的是,我似乎无法在函数内部安装console.log ......没有任何反应。

这是完整的passport.js

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

module.exports = function(passport) {
    let opts = {};
    opts.jwtFromRequest = ExtractJwt.fromHeader();
    opts.secretOrKey = config.secret;

    console.log(opts); // THIS SHOW PRIORE TO THE EXPRESS LISTEN MSG!

    passport.use(new JwtStrategy(opts, (jwt_payload, done) => {

        console.log(jwt_payload); // THIS DOESNT EVER SHOW!

        User.getUserById(jwt_payload._id, (err, user) => {
            if (err) {
                return done(err, false);
            }
            if (user) {
                return done(null, user);
            } else {
                return done(null, false);
                // or create a new account
            }
        });
    }));
}

users.js

const express = require('express');
const router = express.Router();
const passport = require('passport');
const jwt = require('jsonwebtoken');

const config = require('../config/database');
const User = require('../models/user');

...code removed for brevity...

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


module.exports = router;

关于如何“看到”我的有效载荷的任何想法,以便我能找到最新情况?

我正在使用邮递员点击“http://localhost:3000/users/profile” 传递标题“身份验证”和令牌“JWT my-token ...”

THx - 我意识到这是一个奇怪的请求...我正在关注的教程,表明我应该能够看到有效负载,即使我没有经过身份验证...... 所以我有点不知道该转向何处。

1 个答案:

答案 0 :(得分:0)

UGH - 这是我第二次在我问之后继续扯掉东西,只是为了找到解决方案。我正在使用的版本比示例更新,而ExtractJwt.fromHeader()应该是.fromAuthHeaderWithScheme(“jwt”)。令人沮丧的是它没有错误,并且没有足够的进度来记录,但是 - 现在我得到我的控制台日志,并且可以看到我的有效负载...我希望这有助于其他人。 (我对js libs的速度和变化感到沮丧,这会破坏向后兼容性,并且没有清楚地记录路径,我理解为什么会发生这种情况,但它会使学习和故障排除非常令人沮丧)