Я борюсь с миграцией функции HAPI, которая проверяет токен JWT, а затем выполняет вызов базы данных с использованием декодированных учетных данных.
Проблема заключается в том, что jwt.verify
использует обратный вызов, но Hapi и Hapi.MySQL2 был обновлен для использования async
функций
Основная функция выглядит следующим образом
exports.LoadAuth = (req, h) => {
let token = req.headers.authorization.split(' ')[1]
VerifyToken(token, async function (err, decoded) {
if (!err) {
let sql = '#SELECT STATEMENT USING decoded.id'
const [data] = await mfjobs.query(sql, decoded.id)
let auids = []
data.forEach(function (ag) {
auids.push(ag.Name)
})
auids = base64(auids.toString())
return auids
} else {
return {message: 'Not Authorised'}
}
})
}
Функция VerifyToken выглядит следующим образом:
VerifyToken = (tok, done) => {
jwt.verify(tok, Buffer.from(secret, 'base64'), function (err, decTok) {
if (err) {
done(err)
} else {
done(null, decTok)
}
})
}
Отладка всеговыше работает до того момента, когда данные должны быть возвращены во внешний интерфейс.В этот момент я получаю ERROR 500
Я знаю, что проблема связана с функцией VerifyToken
, как будто я опускаю это и жестко кодирую decoded.id
в запросе, когда правильные данные достигают внешнего интерфейса.
Есть указатели?