我正在尝试调试失败的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。任何帮助将不胜感激
答案 0 :(得分:1)
好的,我按照你提到的教程,它似乎工作。 这里有一些注释(有些可能很明显,没有冒犯)。
服务器返回状态200.我修改了它以便返回用户。
app.get(&#34; / user&#34;,auth.authenticate(),function(req,res){ res.json({user:req.user}); });