【发布时间】:2022-01-21 21:35:56
【问题描述】:
我正在 nodeJs 中进行身份验证。我已经成功创建了登录 API,它在邮递员上运行良好。我被困在客户端。它不会在标头上设置令牌。我正在使用护照,jwt 进行身份验证。
我的代码是:
app.post('/login', (req, res, next) => {
var name = {
name: req.body.name,
password: req.body.password
}
// let m = '';
// console.log(name)
request({
url: "http://localhost:3000/api/login",
method: "POST",
json: true, // <--Very important!!!
body: name
}, function (error, response) {
if (response.body.error == true) {
req.flash('errorMsg', response.body.message);
res.redirect('/');
}
else {
// localStorage.setItem('token', response.body.token);
// console.log(localStorage.getItem('token'))
// req.headers['authorization'] = response.body.token;
// res.setHeader('authorization', response.body.token);
// req.session['token'] = response.body.token;
// console.log(req.session['token'])
// res.set({
// 'Content-Type': 'text/plain',
// 'authorization':response.body.token
// });
// res.setHeader('authorization', response.body.token);
// req.headers['authorization'] = response.body.token;
res.redirect('/secret');
next();
}
});
// console.log(m);
});
而我的中间件是:
app.use((req, res, next) => {
var token = req.body.token || req.session['token'] || req.query.token || req.headers['x-access-token'] || localStorage.getItem('token');
req.headers['authorization'] = token;
console.log(req.session['token'], token)
console.log(req.headers['authorization'], config.jwtSecret);
if (token) {
jwt.verify(token, config.jwtSecret, (err, decoded) => {
if (err) {
res.json({
'message': 'Failed to authenticate user'
});
} else {
req.decoded = decoded;
next();
}
});
} else {
// logger.warn('Unauthorized');
return res.sendStatus(401);
}
console.log(req.headers['authorization'])
});
我已尽一切可能在标头中设置令牌,但效果不佳。如果我在 app.use 中间件上获得我的令牌,那么我可以轻松验证令牌,但它不允许设置我的令牌。
我该怎么做??
【问题讨论】:
-
我没试过这个代码。但我有一个想法,即使用整个信息来查看所需信息您可以只记录 'req' 的值而不是 'req.headers['something']' ....
标签: node.js express passport.js