NodeJS:在服务器启动时询问输入

时间:2017-10-30 14:05:57

标签: javascript node.js

是否可以暂停nodeJS服务器的启动并要求操作员在服务器最终完全启动之前输入一些文本?

背景:我想实现用户身份验证,因此使用基于令牌的系统。要对这些令牌进行编码/解码,需要种子(或秘密)。

由于我真的不想在服务器上的某个地方存储该种子,所以我在考虑在服务器启动时询问它,然后将其存储在变量中。

我知道我可以在启动时将秘密作为参数传递,并且它以这种方式工作,但随后它会在控制台中显示。我很想得到这个秘密的提示,而不是展示它(或者可能显示****)。

有办法吗?

3 个答案:

答案 0 :(得分:1)

是的,使用readline模块 https://nodejs.org/api/readline.html

答案 1 :(得分:0)

这取决于。您可以使用setTimeout或类似方法冻结线程,但不建议(由我不知道是否会产生任何影响)。你也可以停止流量流,我想这会更合适,如果有令牌,你可以停止/启动。请查看此文档以获取更多details

要提示你可以使用类似提示模块的东西,或者如果你不想为一个简单的任务导入很多东西你可以做这样的事情

simulator

要使用它,您可以使用该函数的回调进行简单调用

function ask(q, c) {
    var sin = process.stdin;
    var sout = process.stdout;

    sout.write(q);

    sin.once('data', function (data) {
        callback(data.toString().trim());
    });
}

变量process是默认的nodejs流程功能

另一个很好的资源是Efi Shtainer发布的资源。

答案 2 :(得分:0)

您可以使用readline并“提示”用户输入一些内容,然后在收到所述输入后从回调中“启动服务器”(什么样的服务?)。

回调指南: nodeJs callbacks simple example