【发布时间】:2021-01-09 00:33:04
【问题描述】:
我不知道以前是否有人问过这个问题,但我觉得我在互联网上搜索过,几乎没有发现任何关于该主题的内容。
我对 node 和 JWT 很陌生,但我想做的是生成一个 JWT,然后将其存储在 Authorization 标头中,以便我可以从后端访问它并将其发送到前端。它应该类似于“Authorization: Bearer TOKEN”。
我还使用护照和护照-jwt 来授权用户,所以当做类似的事情时
res.setHeader('authorization', 'Bearer' + token');
我收到此错误:错误 [ERR_HTTP_HEADERS_SENT]:在将标头发送到客户端后无法设置标头。因为护照可能已经重定向了响应?
当我搜索答案时,似乎大多数人只是以邮递员或休息为例,并假设我们自己会找到如何将令牌添加到标题中。我猜它很简单,但我错过了什么?
这是我的代码
postLogin = async (req, res, next) => {
await passport.authenticate('local', { //Authenticate user
successRedirect: '/',
failureRedirect: '/users/login',
failureFlash: 'Username or Password incorrect'
})(req, res, next);
const user = await User.findOne({ email: req.body.email });
const token = await auth.generateAccessToken(user.toObject());
res.setHeader('Authorization', 'Bearer ' + token); //Save accesstoken to authorization header
console.log(headers);
}
和
const generateAccessToken = async (user) => {
return new Promise((resolve, reject) => {
jwt.sign(user, process.env.ACCESS_TOKEN_SECRET, {
expiresIn: '30s'
},
(err, token) => {
if (err)
reject(err);
else {
console.log(`Someone generated token: ${token}`);
resolve(token);
}
});
});
}
提前致谢:D
【问题讨论】:
标签: javascript node.js express authentication jwt