passport-jwt,不抛错误,但不认证。甚至不会console.log

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了passport-jwt,不抛错误,但不认证。甚至不会console.log相关的知识,希望对你有一定的参考价值。

我正在尝试使用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 - 我意识到这是一个奇怪的请求...我正在关注的教程,表明我应该能够看到有效载荷,即使我没有经过身份验证...所以我有点卡住,不知道在哪里转。

答案

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

以上是关于passport-jwt,不抛错误,但不认证。甚至不会console.log的主要内容,如果未能解决你的问题,请参考以下文章

NodeJs Express passport-jwt 从令牌中获取错误的用户

VBScript 上的错误处理:不抛出错误

不抛出的方法的快速错误处理[重复]

Hystrix 不抛出 HystrixRuntimeException,而是空消息错误

编译器不抛出“找不到模块”错误

如何处理不抛出 catch 的 API 请求? (403 错误)