@polyv/request-plugin-authorize-app-sign
v2.8.1
Published
用途:应用签名授权插件,使用后会在所有请求中插入应用签名信息。
Readme
AuthorizeAppSignRequestPlugin
用途:应用签名授权插件,使用后会在所有请求中插入应用签名信息。
实例化参数
| 参数名 | 用途 | 类型 | 默认值 |
| ----------------- | ---------------------- | ----------------- | --------------------- |
| appId | 应用 ID | string | - |
| appSecret | 应用密钥 | string | - |
| signatureNonce | 是否使用防重放 | boolean | false |
| signatureMethod | 签名方式 | SignatureMethod | SignatureMethod.MD5 |
| getAppSign | 获取应用签名信息的方法 | function | - |
请求选项
| 参数名 | 用途 | 类型 | 默认值 |
| ----------------- | -------------------- | ----------------- | ------ |
| useAppSign | 是否使用应用签名授权 | boolean | true |
| signatureNonce | 是否使用防重放 | boolean | - |
| signatureMethod | 签名方式 | SignatureMethod | - |
应用签名信息类型
AppSignData 类型如下:
| 参数名 | 用途 | 类型 | 默认值 |
| ----------------- | ------------ | ----------------- | ------ |
| appId | 应用 ID | string | - |
| timestamp | 签名的时间戳 | number | - |
| sign | 签名 | string | - |
| signatureMethod | 签名方式 | SignatureMethod | - |
使用方式
import { PolyvRequest, SignatureMethod } from '@polyv/request-core';
import { AuthorizeAppSignRequestPlugin } from '@polyv/request-plugin-authorize-app-sign';
// 方式一:直接传入应用 ID 和密钥
const requester = new PolyvRequest({
requestPlugins: [
new AuthorizeAppSignRequestPlugin({
appId: 'yourAppId',
appSecret: 'yourAppSecret',
signatureMethod: SignatureMethod.MD5,
}),
],
});
// 方式二(推荐):自定义获取应用签名信息的方法
const requester = new PolyvRequest({
requestPlugins: [
new AuthorizeAppSignRequestPlugin({
getAppSign: async ({ params, signatureMethod }) => {
// 可以在这里实现自定义的签名逻辑
return {
appId: 'yourAppId',
timestamp: Date.now(),
sign: 'yourGeneratedSign',
signatureMethod,
};
},
}),
],
});
// 使用防重放机制
const requester = new PolyvRequest({
requestPlugins: [
new AuthorizeAppSignRequestPlugin({
appId: 'yourAppId',
appSecret: 'yourAppSecret',
signatureNonce: true,
}),
],
});
// 如果你想在某个请求中使用不同的签名方式
requester.get(
'/api/data',
{},
{
signatureMethod: SignatureMethod.SHA256,
},
);
// 如果你想在某个请求中不使用应用签名授权
requester.get(
'/api/data',
{},
{
useAppSign: false,
},
);签名处理逻辑
插件会自动在请求中添加以下参数:
appId: 应用 IDtimestamp: 当前时间戳sign: 根据参数生成的签名signatureMethod: 签名方式(可选)signatureNonce: 防重放随机字符串(当启用防重放时)
签名生成逻辑有两种方式:
- 通过传入的
appId和appSecret自动生成 - 通过自定义的
getAppSign方法生成
- 通过传入的
当启用防重放机制时,每次请求会生成一个唯一的
signatureNonce参数,用于防止请求被重放攻击
