0

免責事項: 私は Node.js と Socket.io をまったく初めて使用します。これは Node.js 固有の質問というよりも Javascript/一般的なプログラミングの質問に似ていますが、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 で実行され、トークンが送り返されます。

私の問題は、コードがきれいに見えないことです。コールバックが複数回書き込まれないようにこのコードを変更する方法があると確信していますが、その理由はわかりません。

より専門的な方法でコードを書き直したい。助言がありますか?

4

1 に答える 1