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».

См.также

Внешние ссылки