Get password from input using node.js

前端 未结 4 1402
梦谈多话
梦谈多话 2021-02-02 09:29

How to get password from input using node.js? Which means you should not output password entered in console.

4条回答
  •  北恋
    北恋 (楼主)
    2021-02-02 09:55

    Here is my tweaked version of nailer's from above, updated to get a callback and for node 0.8 usage:

    /**
     * Get a password from stdin.
     *
     * Adapted from .
     *
     * @param prompt {String} Optional prompt. Default 'Password: '.
     * @param callback {Function} `function (cancelled, password)` where
     *      `cancelled` is true if the user aborted (Ctrl+C).
     *
     * Limitations: Not sure if backspace is handled properly.
     */
    function getPassword(prompt, callback) {
        if (callback === undefined) {
            callback = prompt;
            prompt = undefined;
        }
        if (prompt === undefined) {
            prompt = 'Password: ';
        }
        if (prompt) {
            process.stdout.write(prompt);
        }
    
        var stdin = process.stdin;
        stdin.resume();
        stdin.setRawMode(true);
        stdin.resume();
        stdin.setEncoding('utf8');
    
        var password = '';
        stdin.on('data', function (ch) {
            ch = ch + "";
    
            switch (ch) {
            case "\n":
            case "\r":
            case "\u0004":
                // They've finished typing their password
                process.stdout.write('\n');
                stdin.setRawMode(false);
                stdin.pause();
                callback(false, password);
                break;
            case "\u0003":
                // Ctrl-C
                callback(true);
                break;
            default:
                // More passsword characters
                process.stdout.write('*');
                password += ch;
                break;
            }
        });
    }
    

提交回复
热议问题