Node-RED 凭证

一个节点可以定义多个属性作为credentials。这些属性会与主流程文件分开存储,当从编辑器导出流程时不会被包含在内。

要为节点添加凭据,需按以下步骤操作:

  1. 向节点定义中添加一个新的credentials条目:
     credentials: {
        username: {type:"text"},
        password: {type:"password"}
     },
    

    这些条目接受一个选项 - 它们的type可以是textpassword

  2. 为节点添加合适的编辑模板条目
      class="form-row">
          for="node-input-username"> class="fa fa-tag"> 用户名
          type="text" id="node-input-username">
     
    class="form-row"> for="node-input-password"> class="fa fa-tag"> 密码 type="password" id="node-input-password">

    请注意模板使用了与常规节点属性相同的元素id命名规范。

  3. 在节点的.js文件中,必须更新对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 is set to the appropriate value
    // this.credentials.password is not set
    // this.credentials.has_password indicates if the property is present in the runtime
    ...
}

高级凭证使用

虽然上述凭证系统在大多数情况下已经足够,但在某些情况下,需要在凭证中存储比用户提供的更多值。

例如,要让一个节点支持OAuth工作流,它必须保留服务器分配的令牌,这些令牌用户是看不到的。Twitter节点提供了一个很好的示例,展示了如何实现这一点。