免责声明:我对 Node.js 和 Socket.io 完全陌生,这更像是一个 Javascript/通用编程问题,而不是 Node.js 特定问题,但由于它是用 Node.js 编写的,所以我不得不在这里发布。
我有这样的功能
configs.socket.on('device_pair_authorization', function(device, callback) {
var pair_token = device.pair_token;
var server_signature = device.server_signature;
if(pair_token && server_signature) {
var decipher = crypto.createDecipher('aes-256-cbc', 'SOME_KEY');
var decryptedSignature = decipher.update(server_signature, 'base64', 'utf8');
decryptedSignature = decryptedSignature + decipher.final('utf8');
deSigJSON = JSON.parse(decryptedSignature);
if(deSigJSON.user_id && deSigJSON.pair_token) {
if(deSigJSON.pair_token === pair_token) {
var server_handshake_token = deSigJSON.server_token;
if(server_handshake_token) {
//VALIDATED
var one_time_access_token = crypto.createHash('sha512').update([Math.random(), server_handshake_token, new Date()].join()).digest('base64');
var expires = new Date().getTime() + 60;
callback({
is_authorized: true,
one_time_access_token: one_time_access_token
});
}
callback({
is_authorized: false,
error: "Server Token Is Missing"
});
}
callback({
is_authorized: false,
error: "Pair Token is Incorrect"
});
}
callback({
is_authorized: false,
error: "Signature is corrupted"
});
}
callback({
is_authorized: false,
error: "Pair_Token or Server_Signature is missing"
});
});
整个想法是该函数是一个授权函数,为了防止欺诈,每个步骤都被单独检查,如果在检查过程中出现问题,回调将执行一个特定的错误消息并且 is_authorized=false。如果一切顺利,则使用 is_authorized=true 执行回调并发送回一个令牌。
我的问题是,代码对我来说看起来并不整洁,我确信有一种方法可以修改此代码,以便不会多次编写回调,但我不知道为什么。
我想以更专业的方式重新编写代码。有什么建议么?