问题描述
我正在尝试创建某种用户身份验证,以防止不必要地访问我的NodeRED用户界面。我在网上搜索并找到了2个解决方案,由于某种原因,它们没有解决。他们在这里:
-
试图将httpNodeAuth {user:“ user”,pass:“ password”}键添加到bluemix-settings.js中,但是此后,我的仪表板仍然提示我键入用户名和密码,即使我键入了在pass:“ password”字段中定义的密码。
-
添加了用户定义的环境变量NODE_RED_USERNAME:用户名和NODE_RED_PASSWORD:password。但是什么都没有改变。
这些解决方案在这里汇总:How could I prohibit anonymous access to my NodeRed UI Dashboard on IBM Cloud(Bluemix)? 谢谢大家的帮助!
这里有一些'bluemix-settings.js'
autoInstallModules: true,// Move the admin UI
httpAdminRoot: '/red',// Serve up the welcome page
httpStatic: path.join(__dirname,"public"),//GUI password authentication (ALEX)
httpNodeAuth: {user:"admin",pass:"$2y$12$W2VkVHvBTwRyGCEV0oDw7OkajzG3mdV3vKRDkbXMgIjDHw0mcotLC"},functionGlobalContext: { },// Configure the logging output
logging: {
解决方法
如Node-RED文档here中所述,您需要在settings.js
上添加以下部分(或者在Bluemix / IBM Cloud的情况下,添加bluemix-settings.js
文件)。
...
httpNodeAuth: {user:"user",pass:"$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN."},...
pass
文件是密码的bcrypt哈希。 docs中列出了两种有关如何以正确方式生成哈希的方法。
-
如果您安装了Node-RED的本地副本,则可以使用以下命令:
node-red admin hash-pw
-
只要您安装了本地NodeJS,就可以使用以下内容:
node -e "console.log(require('bcryptjs').hashSync(process.argv[1],8));" your-password-here
您可能需要先安装
bcryptjs
,然后首先安装npm install bcryptjs
。