gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 04:59:42 24 4
gpt4 key购买 nike

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

我的 Passport 设置 (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});
}
};
};

我初始化 Passport 的 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())

我的 protected 路由总是返回 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中添加打印语句,但没有成功。

在 protected 路由上的身份验证中间件之后,不会记录任何内容。

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

最佳答案

好的,我按照你提到的教程进行操作,它似乎有效。这里有一些注释(有些可能是显而易见的,无意冒犯)。

  • 准确复制教程中的代码
  • 一切准备就绪后,您需要“登录”。向 /token 发出 POST 请求。内容类型必须是 application/json,并且在请求正文中,您需要发送带有电子邮件和密码的对象(来自教程)。
  • 登录后,服务器会返回一个 token 。
  • 获取该 token ,然后向 /user 发出 GET 请求。在请求的 header 中添加:授权:JWT [此处为您的 token ]。您必须编写“JWT”和 token ,并用一个空格分隔。
  • 服务器返回状态 200。我进行了修改,使其返回用户。

    app.get("/user", auth.authenticate(), function(req, res) { res.json({用户: req.user});});

关于javascript - Passport.js 验证中间件后没有日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42282386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com