【发布时间】:2021-07-23 03:50:33
【问题描述】:
我已尝试检查它们是否是有关如何使用 JWT extractors 从请求中获取令牌的在线示例,但我不明白如何在用户登录后随请求发送 token。
当我使用Postman 时,有一个名为Authorization 的选项卡,我可以在其中选择Bearer Token 类型,这使我能够添加token 和Authorization,请求http://localhost:5000/profile 成功。
但是,当我在成功登录后尝试访问个人资料http://localhost:5000/profile 时,浏览器仍然只显示Unauthorized。
邮递员屏幕截图:
浏览器屏幕截图:
我已经按照passpot-jwt documentation的配置:
passport.use(
new JWTStrategy(
{
jwtFromRequest: ExtractJWT.fromAuthHeaderAsBearerToken(),
secretOrKey: "mysecret",
},
function (jwtPayload, done) {
return User.findOne({ username: jwtPayload.username })
.then((user) => {
return done(null, user);
})
.catch((err) => {
return done(err);
});
}
)
);
我的login 路线看起来像:
Router.post("/", (req, res, next) => {
passport.authenticate("local", { session: false }, (err, user, info) => {
if (err) return next(err);
if (!user) {
return res.redirect("/login?info=" + info);
}
req.logIn(user, { session: false }, (err) => {
if (err) return next(err);
const token = jwt.sign({ username: user.username }, "mysecret");
res.json({ user, token: `Bearer ${token}` });
});
})(req, res, next);
});
【问题讨论】:
-
您是否希望浏览器在重定向时自动附加授权标头?
-
现在,我想在服务器上做。
标签: node.js express jwt passport.js passport-jwt