Я пытаюсь работать с JWT
в приложении node.js
. Я следовал этому руководству .
Но я сталкиваюсь с проблемами на уровне промежуточного программного обеспечения:
function authenticateToken(req, res, next)
, что в момент времени 10:30 в видео.
Когда я запускаю код, у меня всегда есть:
authHeader == null
Я пробовал разные вещи, чтобы найти другие возможные формы для req.headers ['authorization'] like req.headers.authorization но безрезультатно.
Я должен сказать, что у меня есть маршрут в моем приложении, который позволяет мне войти в систему, и что я использую его прямо перед тем, как маршрут достигнет промежуточное программное обеспечение. Но в любом случае authHeader продолжает оставаться null .
Что я должен сделать, чтобы убедиться, что я получаю действительный authHeader, как ожидается, чтобы приложение работало так же, как в учебное пособие и движение вперед?
В случае, если это может быть полезно, вот полный код функции промежуточного программного обеспечения:
function authenticateToken(req, res, next) {
// Get the jwt access token from the request header.
const authHeader = req.headers['authorization']
const token = authHeader && authHeader.split(' ')[1]
if (token == null) {
console.log('authenticateToken-401')
return res.sendStatus(401)
}
jwt.verify(token, 'myBigSecret', (err, user) => {
console.log(err)
if (err) {
console.log('authenticateToken-403')
return res.sendStatus(403)
}
req.user = user
next()
})
}
А также код, который запускается при входе пользователя в систему:
app.post('/login', async function(req, res) {
Parse.initialize(process.env.APP_ID);
Parse.serverURL = process.env.SERVER_URL;
Parse.User.logIn(req.body.usrname, req.body.password, {
success: user => {
// Let us handle this using JWT.
const jwtUser = {name: req.body.usrname}
const accessToken = jwt.sign(jwtUser, 'myBigSecret')
res.setHeader("Authorization", 'Bearer '+accessToken);
res.json({accessToken: accessToken})
},
error: (user, error) => {
console.log('Error: '+error);
res.render('pages/login.ejs', {});
},
});
});