Я довольно новичок в NodeJS и Socket.io.У меня есть мой основной файл как index.js , который вызывает вспомогательную функцию verifyToken
, но он не ждет возвращаемого значения из вспомогательной функции и продолжает работу.
Я добавилconsole.log для отслеживания потока выполнения, как показано ниже:
Файл: index.js
socket.on('authenticate', function(data, ack) {
var employeeID = data.employeeID;
var token = data.Token;
var tokenHelper = require("@helpers/tokenHelper"); //@helpers is an alias by using the module-alias package for helpers folder
//Connect with helper to verify token
var isValid = tokenHelper.verifyToken(employeeID, token);
if(isValid) {
socket.auth = true;
ack("Authenticated");
console.log("Authenticated");
}
else {
ack("Unauthorised");
console.log("Unauthorised");
}
});
Файл: tokenHelper.js
var mysqlDatabase = require("@config/mysql");
module.exports = {
verifyToken: function(employeeID, token, response) {
var publicKey = fs.readFileSync(path.resolve("SOME_PATH"), "utf8");
var isValid = false;
//Verify options
var verifyOptions = {
issuer: issuer,
subject: subject,
audience: audience,
expiresIn: expiresIn,
algorithm: ["RS256"]
};
//Extract data from received payload
var receivedPayload = jwt.verify(token, publicKey, verifyOptions);
var receivedEmailAddress = receivedPayload.sub;
var receivedEmployeeID = receivedPayload.EmployeeID;
console.log("Received email: " + receivedEmailAddress);
console.log("Received id: " + receivedEmployeeID);
console.log("Employee id: " + employeeID);
//SQL Query to check EmployeeID in the database, verification of token is successful if entry is found in the database
if(results !== null) {
isValid = true;
console.log("Verification successful");
}
return isValid;
}
};
Текущий консольный журнал:
Полученный адрес электронной почты: user@test.com
Полученный идентификатор: 1
Идентификатор сотрудника: 1
Несанкционировано
Проверка успешна
Ожидаемый журнал консоли:
Получено письмо: user@test.com
Полученный идентификатор: 1
Идентификатор сотрудника: 1
Проверка успешна
Несанкционирован