Node-RED:Создание нод/Учетные данные: различия между версиями
Myagkij (обсуждение | вклад) |
Нет описания правки |
||
Строка 13: | Строка 13: | ||
'''1.''' Добавить в [[HTML-файл]] ноды новую запись '''«credentials»''': | '''1.''' Добавить в [[HTML-файл]] ноды новую запись '''«credentials»''': | ||
:: <syntaxhighlight lang="javascript | :: <syntaxhighlight lang="javascript"> | ||
credentials: { | credentials: { | ||
username: {type:”text”}, | username: {type:”text”}, | ||
Строка 24: | Строка 24: | ||
'''2.''' Добавляем соответствующие фрагменты в [[HTML-шаблон]] меню редактирования ноды: | '''2.''' Добавляем соответствующие фрагменты в [[HTML-шаблон]] меню редактирования ноды: | ||
:: <syntaxhighlight lang="javascript | :: <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 | :: <syntaxhighlight lang="javascript"> | ||
RED.nodes.registerType("my-node",MyNode,{ | RED.nodes.registerType("my-node",MyNode,{ | ||
credentials: { | credentials: { | ||
Строка 54: | Строка 54: | ||
В среде выполнения нода может получить доступ к своим учетным данным при помощи свойства '''«credentials»''': | В среде выполнения нода может получить доступ к своим учетным данным при помощи свойства '''«credentials»''': | ||
<syntaxhighlight lang="javascript | <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 | <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».
См.также
Внешние ссылки