2017-04-02 47 views
0

我使用Node.js的提示图书馆,我有这样的代码:节点JS提示库不隐藏密码

// 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); 
}) 

基本类是非常简单的:

// 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 

我有的问题是,promp不会隐藏密码。 下面是一个输出:

$ NPM启动

[email protected]启动d:\文件\ Programmation \的NodeJS \ JIRA 节点index.js

提示:输入冲刺ID: 156 提示:为sikkache输入密码:不是真正的密码 冲刺ID:156 基础:c2lra2FjaGU6Tm90IHRoZSByZWFsIFBhc3N3b3Jk

正如你所看到的,密码是清晰的。

任何人都可以帮助我,我真的需要密码才能隐藏。

回答

0

你可以尝试readline-sync模块

它有一个名为hideEchoBack一个选项,隐藏键入的文本在屏幕上有*

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

上gitbash不工作(我工作的窗口,可耻的是我),但它适用于PowerShell 8o –