在我的app.js文件中,我正在指定使用中间件的“/users”路由,如下所示:
app.use('/users', passport.authenticate('jwt', { session: false }), users);
我随后有一个单独的文件./passport.js
(我已经在我的app.js
顶部引用),在那里我指定了我的护照策略:
passport.use(new JWTStrategy({
jwtFromRequest: ExtractJWT.fromAuthHeaderAsBearerToken(),
secretOrKey : 'jwt_secret_key'
},
function (jwtPayload, cb) {
console.log('jwtPayload', jwtPayload)
}
));
但是我无法运行控制台日志。
我正在使用Postman进行测试,并从授权选项中选择Bearer Token
。 我可以看到它正在向我的请求添加一个标头。
当我在我的节点应用程序中记录请求对象时,我可以看到它的样子:
headers: {
authorization: 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1YWM0YWI2ZTk1MWJiMjE1M2NhMjc0OWUiLCJmaXJzdF9uYW1lIjoiQW5kcmV3IiwibGFzdF9uYW1lIjoiTWNDYWxsdW0iLCJlbWFpbCI6ImFtY2NhbGx1bTg5QGdtYWlsLmNvbSIsImlhdCI6MTUyMjg0NzEyNSwiZXhwIjoxNTIyODUwNzI1fQ.WH12GJHMGrGsiJNIwUG2Dx_a9cZKjw7_SW8FYlEvLmk',
accept: '*/*',
host: 'localhost:3037',
},
那么中间件应该检测到令牌并调用中间件吗?
任何帮助都将不胜感激。
app.use(passport.initialize())
? - JamessecretOrKey
与我创建令牌的secretOrKey
不匹配。不确定为什么它一直默默失败,但现在看起来问题已经解决了。 - Stretch0passport.initialize()
是必需的。 - James