我想爲Paw生成Json Web令牌創建一個DynamicValue插件。完整的源代碼可以在這裏找到:https://github.com/choffmeister/Paw-JsonWebTokenDynamicValuePaw的DynamicValueInput類型JSON和複選框的問題
相關文件:
// JsonWebTokenDynamicValue.js
import jsrsasign from 'jsrsasign';
@registerDynamicValueClass
class JsonWebTokenDynamicValue {
static identifier = 'de.choffmeister.PawExtensions.JsonWebTokenDynamicValue';
static title = 'Json Web Token';
static help = 'https://github.com/choffmeister/Paw-JsonWebTokenDynamicValue';
static inputs = [
DynamicValueInput('signatureSecret', 'Secret', 'SecureValue'),
DynamicValueInput('signatureSecretIsBase64', 'Secret is Base64', 'Checkbox'),
DynamicValueInput('payload', 'Payload', 'JSON')
];
evaluate() {
console.log(JSON.stringify(this.payload, null, 2));
console.log(JSON.stringify(this.signatureSecretIsBase64, null, 2));
const now = Math.floor((new Date()).getTime()/1000);
const header = {
typ: 'JWT',
alg: 'HS256'
};
const payload = {
...this.payload,
exp: now + (60 * 60 * 24 * 7),
iat: now
};
const secret = this.signatureSecretIsBase64
? {b64: jsrsasign.b64utob64(this.signatureSecret)}
: this.signatureSecret;
return jsrsasign.jws.JWS.sign(null, header, payload, secret);
}
}
它的外觀在GUI:
我搜索https://luckymarmot.com/paw/doc/extensions/create-dynamic-value,周圍的文檔和所有的插件實例我可以在網上找到,但我仍然有兩個問題,我不能解決:
- 使用類型
Checkbox
的DynamicValueInput時,輸入字段不可見(請參見屏幕截圖)。我得到一個值(空字符串),但只是看不到它。我如何使複選框出現? 當使用
JSON
類型的DynamicValueInput時,則使用JSON內部的動態值(請參見屏幕截圖)未解析,但我得到了一種描述對象(字符串化),該動態值是什麼。記錄的this.payload
物體看起來是這樣的:{ "foo": "[{\"data\":{\"environmentVariable\":\"2925ABDA-8AAC-440B-B2CA-DA216CD37A09\"},\"identifier\":\"com.luckymarmot.EnvironmentVariableDynamicValue\"}]" }
也許這是值得大家注意:當使用
KeyValueList
類型則DynamicInputValue內的動態值妥善解決。我怎樣才能用JSON
這個類型來實現呢?
你說得對,這兩個問題顯然是錯誤。我已經能夠自己重現它。解決方案將很快推出! :) 抱歉給你帶來不便。 –
沒問題。期待修復,以便我可以發佈我的插件:) – Thekwasti