[TOC]
# **1. 启用注解**
`@GoEnableSigner`
`@GoSigner`
# **2. 配置文件**
```
FastBoot:
signer:
header: signer # 签名键,默认sign
secret: FastBoot!@# # 加密串,默认FastBoot!@#
```
# **3. 注意事项**
> 如需使用,需开启@GoEnableSigner,方法上加入@GoSigner注解即可
## **3.1 计算签名**
```
/**
* 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值
*
* @param args
*/
public static void main(String[] args) {
Dict dict = Dict.create().set("a", 1).set("b", 2);
System.out.println(SecureUtil.signParams(DigestAlgorithm.MD5, dict, "FastBoot!@#"));
}
```
参数a=1&b=2,sign=ed1681dab33d1289bd351b6ea72f54e5
# **4. 示例说明**
## **4.1 效验签名**
```
@GoSigner
@RequestMapping("/sign")
public Result sign(String p1, String p2) {
return R.succ(Lists.newArrayList(p1, p2));
}
```
### **4.1.1 不传返回**
```
{
"code": 6000,
"msg": "签名错误:非法请求",
"success": false
}
```
### **4.1.2 传错返回**
```
{
"code": 6000,
"msg": "签名错误:验签失败",
"success": false
}
```
## **4.2 忽略效验**
```
@GoSigner(ignore = true)
@RequestMapping("/ignore")
public Result ignore(String p1, String p2) {
return R.succ(Lists.newArrayList(p1, p2));
}
}
```
ignore:调试使用,默认为false关闭,当ignore为true则不验证