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

时间:2017-02-16 18:55:44

标签: javascript node.js express passport.js jwt

我正在尝试调试失败的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

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

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

我尝试了大量的设置排列over the past 3 days now。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

好的,我按照你提到的教程,它似乎工作。 这里有一些注释(有些可能很明显,没有冒犯)。

  • 完全复制代码作为教程
  • 拥有一切后,您需要&#34;登录&#34;。向 / token 发出POST请求。内容类型必须是application / json,并且在请求的主体上,您需要使用电子邮件和密码发送对象(来自教程)。
  • 登录后,服务器返回一个令牌。
  • 获取该令牌,现在向 / user 发出GET请求。在请求的标题中添加:授权:JWT [此处为您的令牌]。你必须写&#34; JWT&#34;并且令牌被一个空格隔开。
  • 服务器返回状态200.我修改了它以便返回用户。

    app.get(&#34; / user&#34;,auth.authenticate(),function(req,res){     res.json({user:req.user}); });