# 签名字符串

# 格式

appid=系统appid&body=请求对象的Json字符串&mdl_name=模块名称&svc_name=服务名称&key=系统的签名key

# 示例

系统的appid:9d6ab21aab7c491a80256fbc9180c4f8

系统的签名key:50dfe69f33904468a32214d9ede29395230cbdc196e541a6b380ee7b50eca3939eb6c66f90ec44b395dc39533a2a0ab77ab4ea77aa2e45809a77647e270fe862

系统名称:prj_c

模块名称:mdl_test

服务名称:svc_test_query_function

服务请求的数据对象:

{
    "sys_head": {
        "usr_id": "",
        "org_id": "",
        "sys_id": "",
        "mdl_func_id": "",
        "login_key": ""
    },
    "data": {
        "sys_id": "",
        "mdl_func_id": "",
        "mdl_func_parent_id": "",
        "path": "",
        "component": "",
        "redirect": "",
        "name": "",
        "hidden": "",
        "icon": "",
        "isKeepAlive": "",
        "title": ""
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

那么,签名的字符串为:

appid=9d6ab21aab7c491a80256fbc9180c4f8&body={"sys_head":{"usr_id":null,"org_id":null,"sys_id":null,"mdl_func_id":null,"login_key":"463635e7e4c8420580fc347b7238b4c3"},"data":{"sys_id":"","mdl_func_id":"","mdl_func_parent_id":"","path":"","component":"","redirect":"","name":"","hidden":"","icon":"","isKeepAlive":"","title":""}}&mdl_name=mdl_test&svc_name=svc_test_query_function&sys_name=kedao_register&key=50dfe69f33904468a32214d9ede29395230cbdc196e541a6b380ee7b50eca3939eb6c66f90ec44b395dc39533a2a0ab77ab4ea77aa2e45809a77647e270fe862

注意:签名字符串是没有换行的

# 生成签名

根据创建系统时选择的签名算法 MD5(已不安全) 或 SHA256(推荐),对签名字符串进行加密,得到 sign 的值。

在 JavaScript 中实现如下:

// 拼接参与签名的字符串
let str_sign = ''
str_sign += 'appid=' + request_obj.appid
str_sign += '&body=' + (typeof (request_obj.body) === 'object' ? JSON.stringify(request_obj.body) : request_obj.body)
str_sign += '&mdl_name=' + request_obj.mdl_name
str_sign += '&svc_name=' + request_obj.svc_name
str_sign += '&sys_name=' + request_obj.sys_name
str_sign += '&key=' + api_sign_key

// 签名的结果
let sign = ''
// str_sign 为拼接好的签名格式的字符串
// sign = MD5(str_sign).toString()
// 或
sign = SHA256(str_sign).toString()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15