Node-RED:Создание нод/Учетные данные: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Строка 13: Строка 13:
'''1.''' Добавить в [[HTML-файл]] ноды новую запись '''«credentials»''':
'''1.''' Добавить в [[HTML-файл]] ноды новую запись '''«credentials»''':


:: <syntaxhighlight lang="javascript" enclose="div">
:: <syntaxhighlight lang="javascript">
credentials: {
credentials: {
     username: {type:”text”},
     username: {type:”text”},
Строка 24: Строка 24:
'''2.''' Добавляем соответствующие фрагменты в [[HTML-шаблон]] меню редактирования ноды:
'''2.''' Добавляем соответствующие фрагменты в [[HTML-шаблон]] меню редактирования ноды:


:: <syntaxhighlight lang="javascript" enclose="div">
:: <syntaxhighlight lang="javascript">
<div class="form-row">
<div class="form-row">
     <label for="node-input-username"><i class="icon-tag"></i> Username</label>
     <label for="node-input-username"><i class="icon-tag"></i> Username</label>
Строка 39: Строка 39:
'''3.''' В [[JavaScript-файл]]е ноды содержимое функции '''RED.nodes.registerType()''' нужно обновить, добавив в нее эти новые учетные данные.
'''3.''' В [[JavaScript-файл]]е ноды содержимое функции '''RED.nodes.registerType()''' нужно обновить, добавив в нее эти новые учетные данные.


:: <syntaxhighlight lang="javascript" enclose="div">
:: <syntaxhighlight lang="javascript">
  RED.nodes.registerType("my-node",MyNode,{
  RED.nodes.registerType("my-node",MyNode,{
     credentials: {
     credentials: {
Строка 54: Строка 54:
В среде выполнения нода может получить доступ к своим учетным данным при помощи свойства '''«credentials»''':
В среде выполнения нода может получить доступ к своим учетным данным при помощи свойства '''«credentials»''':


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript">
function MyNode(config) {
function MyNode(config) {
     RED.nodes.createNode(this,config);
     RED.nodes.createNode(this,config);
Строка 66: Строка 66:
В редакторе у ноды ограниченный доступ к своим учетным данным. Если они типа '''«text»''', то они будут доступны через свойство '''«credentials»''' – как и в среде выполнения. Но учетные данные типа '''«password»''' доступны не будут. Вместо этого будет доступ к соответствующему булеву значению '''«has_<название-свойства>»''', которое позволяет узнать, не пустое ли значение присвоено этому свойству.
В редакторе у ноды ограниченный доступ к своим учетным данным. Если они типа '''«text»''', то они будут доступны через свойство '''«credentials»''' – как и в среде выполнения. Но учетные данные типа '''«password»''' доступны не будут. Вместо этого будет доступ к соответствующему булеву значению '''«has_<название-свойства>»''', которое позволяет узнать, не пустое ли значение присвоено этому свойству.


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript">
oneditprepare: function() {
oneditprepare: function() {
     // В «this.credentials.username» задано соответствующее значение.
     // В «this.credentials.username» задано соответствующее значение.

Версия от 20:06, 23 мая 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Черновик


Учетные данные[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».

См.также

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