繁体   English   中英

Passport.js验证中间件后没有日志

[英]No logs after Passport.js authenticate middleware

我正在尝试调试失败的JWT身份验证设置,该设置始终返回401。

我的护照设置( middleware/auth.js

import passport from 'passport'
import { Strategy as JwtStrategy, ExtractJwt } from 'passport-jwt'

module.exports = function() {
  var options = {};
  options.jwtFromRequest = ExtractJwt.fromAuthHeader()
  options.secretOrKey = 'superdupersecret'

  var strategy = new JwtStrategy(options, function(payload, done) {
    console.log('this is not printing')              <---------------
    var user = payload.sub || null;
    if (user) {
      return done(null, { id: user._id });
    } else {
      return done(new Error("User not found"), null);
    }
  });

  passport.use(strategy);

  return {
    initialize: () => {
      console.log('this only prints on boot');       <---------------
      return passport.initialize();
    },
    authenticate: () => {
      console.log('this too')                        <---------------
      return passport.authenticate("jwt", {session: false});
    }
  };
};

我的server.js文件用于初始化护照:

import express from 'express'
(...)
var auth = require("./middleware/auth.js")();


// Instantiate app
const app = express();

// Initialize passport for auth use
app.use(auth.initialize())

我的受保护路线始终返回401:

import express from 'express'
var auth = require("../middleware/auth.js")();

const userRouter = express.Router()

userRouter.get('/dashboard', auth.authenticate(), (req, res) => {
    res.send('It worked! User id is: ' + req.user + '.')
})

export default userRouter

我尝试实际的password.js模块本身以及passport-jwt中添加打印语句,但没有成功。

在受保护路由上的身份验证中间件之后,没有任何日志记录。

在过去的3天里,我已经尝试了大量的设置排列。 任何帮助将不胜感激

好的,我遵循了您提到的教程,它似乎可以正常工作。 这里有一些注意事项(一些可能很明显,没有冒犯性)。

  • 完全复制本教程中的代码
  • 一切准备就绪后,您需要“登录”。 / token发出POST请求。 内容类型必须为application / json,并且在请求的主体上,您需要使用电子邮件和密码(来自教程)发送对象。
  • 登录后,服务器将返回令牌。
  • 获取该令牌,然后向/ user发出GET请求。 在请求的标题中添加:授权:JWT [此处是您的令牌]。 您必须编写“ JWT”,并且令牌之间必须用一个空格隔开。
  • 服务器返回状态200。我进行了修改,因此它返回了用户。

    app.get(“ / user”,auth.authenticate(),function(req,res){res.json({user:req.user});});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM