Also ich denke, ich habe das richtig, aber aus irgendeinem Grund ist es nicht ausgeführt, wie ich denken würde. Ich möchte nur den JWT Token dekodieren und die Daten zurückgeben. Hier ist der Code:Node.js Callback gibt keinen Wert an die aufrufende Funktion zurück. Just Timeout
var jwtToken = function(message, callback) {
var tokenArray = message.headers['authorization'];
var array = tokenArray.toString().split(' ');
if (array[0] == 'Bearer') {
var token = array[1];
} else {
return callback.status(401).json({message: "bad json token"});
}
var map = JSON.parse(process.env.AUTH0_SECRET);
var decoded = jwt2.decode(token, {complete: true});
console.log('PAYLOAD:');
console.log(decoded.payload);
var clientId = decoded.payload.aud;
var secret = map[clientId];
//console.log('ENVIRONMENT SECRET: ' + map);
//console.log('CLIENT ID: ' + clientId);
//console.log('MAPPED SECRET: ' + secret);
jwt2.verify(token, secret, function(err, decode){
if (err) {
callback.status(401).json({message: "JSON is incorrect or expired"})
} else {
callback = decode;
}
});
};
//route to make sure that the API works
app.get('/', function(req,res) {
jwtToken(req, function(data){
console.log(data);
res.json({ message: 'You are connected to the API ' + data})
});
});
Was würde ich erwarten, ist, dass ich in der Anforderung in die jwtToken Funktion übergeben und ich würde das dekodiert Token in dem Rückruf zurück. Ich würde dann die Antwort mit der Nachricht und dem entschlüsselten Token senden. Was ich bekomme, sind die Daten in den Protokollen des jwtToken-Aufrufs, aber dann läuft es weiter, bis es abläuft. Ich bin mir nur nicht sicher, was ich im Callback vermasselt habe, damit es das Ergebnis nicht zurücksendet. Danke für Ihre Hilfe.
Also in der 'console.log (Daten)' können Sie das decodierte Token sehen? Meine Vermutung ist, dass es die 'res' im Callback nicht sehen kann. Ich denke, ein einfacher Weg, dies zu überprüfen, wäre, das 'res' Objekt in der Konsole innerhalb des Callbacks zu protokollieren und zu sehen, ob Sie undefiniert werden. Wenn dies der Fall ist, müssen Sie entweder in Erwägung ziehen, die "Res" zu übergeben oder Versprechungen hinzuzufügen. –