[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則不驗證