Node-RED:Создание нод/Учетные данные: различия между версиями
Myagkij (обсуждение | вклад) |
Myagkij (обсуждение | вклад) Нет описания правки |
||
(не показаны 2 промежуточные версии 1 участника) | |||
Строка 1: | Строка 1: | ||
{{Node-RED/Панель перехода}} | {{Node-RED/Панель перехода}} | ||
{{Перевод от Сubewriter}} | {{Перевод от Сubewriter}} | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=Учетные данные<ref>[https://nodered.org/docs/creating-nodes/credentials nodered.org - Node credentials]</ref>= | =Учетные данные<ref>[https://nodered.org/docs/creating-nodes/credentials nodered.org - Node credentials]</ref>= | ||
Строка 13: | Строка 10: | ||
'''1.''' Добавить в [[HTML-файл]] ноды новую запись '''«credentials»''': | '''1.''' Добавить в [[HTML-файл]] ноды новую запись '''«credentials»''': | ||
:: <syntaxhighlight lang="javascript | :: <syntaxhighlight lang="javascript"> | ||
credentials: { | credentials: { | ||
username: {type:”text”}, | username: {type:”text”}, | ||
Строка 24: | Строка 21: | ||
'''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: | Строка 36: | ||
'''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: | Строка 51: | ||
В среде выполнения нода может получить доступ к своим учетным данным при помощи свойства '''«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: | Строка 63: | ||
В редакторе у ноды ограниченный доступ к своим учетным данным. Если они типа '''«text»''', то они будут доступны через свойство '''«credentials»''' – как и в среде выполнения. Но учетные данные типа '''«password»''' доступны не будут. Вместо этого будет доступ к соответствующему булеву значению '''«has_<название-свойства>»''', которое позволяет узнать, не пустое ли значение присвоено этому свойству. | В редакторе у ноды ограниченный доступ к своим учетным данным. Если они типа '''«text»''', то они будут доступны через свойство '''«credentials»''' – как и в среде выполнения. Но учетные данные типа '''«password»''' доступны не будут. Вместо этого будет доступ к соответствующему булеву значению '''«has_<название-свойства>»''', которое позволяет узнать, не пустое ли значение присвоено этому свойству. | ||
<syntaxhighlight lang="javascript | <syntaxhighlight lang="javascript"> | ||
oneditprepare: function() { | oneditprepare: function() { | ||
// В «this.credentials.username» задано соответствующее значение. | // В «this.credentials.username» задано соответствующее значение. |
Текущая версия от 10:16, 9 сентября 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».
См.также
Внешние ссылки