2017-04-02 2 views
0

J'utilise la bibliothèque invite pour Node.js et j'ai ce code:bibliothèque invite Node ne cache pas le mot de passe

// Entry point for the program 
var prompt =require ('prompt') 
var Basic = require('./helper/basic') 
var program = require('./helper/cli-args') 

var pwd = new Basic() 

var promptSchema = { 
    properties: { 
    sprintID: { 
     description: "Enter sprint ID", 
     type: 'integer' 
    }, 
    password: { 
     description: "Enter the password for " + program.user, 
     hidden: true 
    } 
    } 
} 
prompt.start() 
prompt.get(promptSchema, function (err,result) { 
    if (err) console.log(err) 
    program.sprint = result.sprintID 
    pwd.setDigest(result.password) 
    prompt.stop() 
    console.log ("Sprint ID: ", program.sprint) 
    console.log("Basic: ", pwd.digest); 
}) 

La classe de base est très simple:

// Basic authentication 
var base64 = require('base-64') 
var program = require ('../helper/cli-args') 

class Basic { 
    setDigest(pwd) { 
    this.digest = base64.encode(program.user.concat(":").concat(pwd)) 
    } 
} 
module.exports = Basic 

Le problème que j'ai, c'est que l'invite ne cache pas le mot de passe. Voici une sortie:

$ commencer NPM

[email protected] start D: \ Documents \ Programmation \ NodeJS \ JIRA noeud index.js

rapide: Entrez sprint ID: 156 invite: Entrez le mot de passe pour sikkache: Pas le vrai mot de passe Sprint ID: 156 de base: c2lra2FjaGU6Tm90IHRoZSByZWFsIFBhc3N3b3Jk

Comme vous pouvez le voir, le mot de passe est clair.

Quelqu'un peut-il m'aider, j'ai vraiment besoin que le mot de passe soit caché.

Répondre

0

vous pouvez essayer readline-sync Module

il a une option appelée hideEchoBack qui cache le texte tapé à l'écran avec *

var readlineSync = require('readline-sync'); 

// Wait for user's response. 
var userName = readlineSync.question('May I have your name? '); 
console.log('Hi ' + userName + '!'); 

// Handle the secret text (e.g. password). 
var favFood = readlineSync.question('What is your favorite food? ', { 
    hideEchoBack: true // The typed text on screen is hidden by `*` (default). 
}); 
console.log('Oh, ' + userName + ' loves ' + favFood + '!'); 
+0

Ne fonctionne pas sur gitbash (je travaille sur les fenêtres, la honte sur moi), mais cela fonctionne sur powershell 8o –