Node-RED:Создание нод/Учетные данные
Черновик |
Учетные данные[1]
Несколько свойств ноды можно задать как учетные данные («credentials»). Это свойства, которые хранятся отдельно от главного файла потока и не включаются в данные потоков, экспортируемых из редактора. Чтобы добавить учетные данные в ноду, нужно сделать следующее:
1. Добавить в HTML-файл ноды новую запись «credentials»:
credentials: { username: {type:”text”}, password: {type:”password”} },
У настроек этой записи может быть одно из двух значений – их тип («type») может быть либо «text», либо «password».
2. Добавляем соответствующие фрагменты в HTML-шаблон меню редактирования ноды:
<div class="form-row"> <label for="node-input-username"><i class="icon-tag"></i> Username</label> <input type="text" id="node-input-username"> </div> <div class="form-row"> <label for="node-input-password"><i class="icon-tag"></i> Password</label> <input type="password" id="node-input-password"> </div>
Обратите внимание, что в атрибуте «id» значения построены по тому же принципу, что и в свойствах обычных нод.
3. В JavaScript-файле ноды содержимое функции RED.nodes.registerType() нужно обновить, добавив в нее эти новые учетные данные.
RED.nodes.registerType("my-node",MyNode,{ credentials: { username: {type:"text"}, password: {type:"password"} } });
Доступ к учетным данным
Использование учетных данных в среде выполнения
В среде выполнения нода может получить доступ к своим учетным данным при помощи свойства «credentials»:
function MyNode(config) {
RED.nodes.createNode(this,config);
var username = this.credentials.username;
var password = this.credentials.password;
}
Использование учетных данных в редакторе
В редакторе у ноды ограниченный доступ к своим учетным данным. Если они типа «text», то они будут доступны через свойство «credentials» – как и в среде выполнения. Но учетные данные типа «password» доступны не будут. Вместо этого будет доступ к соответствующему булеву значению «has_<название-свойства>», которое позволяет узнать, не пустое ли значение присвоено этому свойству.
oneditprepare: function() {
// В «this.credentials.username» задано соответствующее значение.
// Значение в «this.credentials.password» не задано.
// Значение «this.credentials.has_password» позволяет узнать,
// есть ли пароль в среде выполнения.
...
}
Продвинутое использование учетных данных
Методы, описанные выше, работают в большинстве случаев, но в некоторых случаях в учетных данных нужно сохранить больше значений, чем было предоставлено пользователем.
К примеру, если нода поддерживает использование OAuth, в ней также должны храниться присваиваемые сервером токены, которые пользователь не видит. Хороший пример того, как это можно сделать – это нода «Twitter».