mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-06-28 13:34:18 +08:00
docs: api-sign 模块新增 @SaCheckSign 注解示例与多应用模式示例
This commit is contained in:
parent
b12b91e1ad
commit
4726544b85
@ -478,13 +478,112 @@ public SaResult addMoney(long userId, long money) {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
完。
|
|
||||||
|
### 10、使用注解校验签名
|
||||||
|
|
||||||
|
`@SaCheckSign` 注解用于为一个接口提供签名校验,用于替代 `SaSignUtil.checkRequest(SaHolder.getRequest())`,示例如下:
|
||||||
|
|
||||||
|
``` java
|
||||||
|
// 校验全部参数:效果等同于 SaSignUtil.checkRequest(SaHolder.getRequest())
|
||||||
|
@SaCheckSign
|
||||||
|
@RequestMapping("test1")
|
||||||
|
public SaResult test1() {
|
||||||
|
// code ...
|
||||||
|
return SaResult.ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 指定参与签名的参数有哪些:效果等同于 SaSignUtil.checkRequest(SaHolder.getRequest(), "id", "name");
|
||||||
|
@SaCheckSign(verifyParams = {"id", "name"})
|
||||||
|
@RequestMapping("test2")
|
||||||
|
public SaResult test2() {
|
||||||
|
// code ...
|
||||||
|
return SaResult.ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 指定: 在多应用模式下,使用的 appid,详情见下
|
||||||
|
@SaCheckSign(appid = "xm-shop")
|
||||||
|
@RequestMapping("test3")
|
||||||
|
public SaResult test3() {
|
||||||
|
// code ...
|
||||||
|
return SaResult.ok();
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### 11、多应用模式
|
||||||
|
|
||||||
|
有时候我们可能需要同时与多个应用对接,每个应用都需要使用不同的秘钥:
|
||||||
|
|
||||||
|
首先在配置文件配置多个应用信息:
|
||||||
|
<!---------------------------- tabs:start ---------------------------->
|
||||||
|
<!------------- tab:yaml 风格 ------------->
|
||||||
|
``` yaml
|
||||||
|
sa-token:
|
||||||
|
# API 签名配置 多应用模式
|
||||||
|
sign-many:
|
||||||
|
# 应用1
|
||||||
|
xm-shop:
|
||||||
|
secret-key: 0123456789abcdefg
|
||||||
|
digest-algo: md5
|
||||||
|
# 应用2
|
||||||
|
xm-forum:
|
||||||
|
secret-key: 0123456789hijklmnopq
|
||||||
|
digest-algo: sha256
|
||||||
|
# 应用3
|
||||||
|
xm-video:
|
||||||
|
secret-key: 12341234aaaaccccdddd
|
||||||
|
digest-algo: sha512
|
||||||
|
```
|
||||||
|
<!------------- tab:properties 风格 ------------->
|
||||||
|
``` properties
|
||||||
|
# API 签名配置 多应用模式
|
||||||
|
# 应用1
|
||||||
|
sa-token.sign-many.xm-shop.secret-key=0123456789abcdefg
|
||||||
|
sa-token.sign-many.xm-shop.digest-algo=md5
|
||||||
|
# 应用2
|
||||||
|
sa-token.sign-many.xm-forum.secret-key=0123456789hijklmnopq
|
||||||
|
sa-token.sign-many.xm-forum.digest-algo=sha256
|
||||||
|
# 应用3
|
||||||
|
sa-token.sign-many.xm-video.secret-key=12341234aaaaccccdddd
|
||||||
|
sa-token.sign-many.xm-video.digest-algo=sha512
|
||||||
|
```
|
||||||
|
<!------------- tab:代码风格示例 ------------->
|
||||||
|
``` java
|
||||||
|
@Autowired
|
||||||
|
public void configSaToken(SaTokenConfig config) {
|
||||||
|
// API 签名配置 多应用模式
|
||||||
|
// 应用1
|
||||||
|
config.getSignMany().put("xm-shop", new SaSignConfig()
|
||||||
|
.setSecretKey("0123456789abcdefg") // 秘钥
|
||||||
|
.setDigestAlgo("md5") // 签名算法
|
||||||
|
);
|
||||||
|
// 应用2
|
||||||
|
config.getSignMany().put("xm-forum", new SaSignConfig()
|
||||||
|
.setSecretKey("0123456789hijklmnopq")
|
||||||
|
.setDigestAlgo("sha256")
|
||||||
|
);
|
||||||
|
// 应用3
|
||||||
|
config.getSignMany().put("xm-video", new SaSignConfig()
|
||||||
|
.setSecretKey("12341234aaaaccccdddd")
|
||||||
|
// 自定义签名算法示例
|
||||||
|
.setDigestMethod(fullStr -> {
|
||||||
|
return SaSecureUtil.sha384(fullStr);
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
<!---------------------------- tabs:end ---------------------------->
|
||||||
|
|
||||||
|
|
||||||
|
然后在签名时通过指定 appid 的方式获取对应的 SignTemplate 进行操作:
|
||||||
|
|
||||||
|
``` java
|
||||||
|
// 创建签名示例
|
||||||
|
String paramStr = SaSignMany.getSignTemplate("xm-shop").addSignParamsAndJoin(paramMap);
|
||||||
|
|
||||||
|
// 校验签名示例
|
||||||
|
SaSignMany.getSignTemplate("xm-shop").checkRequest(SaHolder.getRequest());
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -13,8 +13,9 @@
|
|||||||
- `@SaCheckSafe`: 二级认证校验 —— 必须二级认证之后才能进入该方法。
|
- `@SaCheckSafe`: 二级认证校验 —— 必须二级认证之后才能进入该方法。
|
||||||
- `@SaCheckHttpBasic`: HttpBasic校验 —— 只有通过 HttpBasic 认证后才能进入该方法。
|
- `@SaCheckHttpBasic`: HttpBasic校验 —— 只有通过 HttpBasic 认证后才能进入该方法。
|
||||||
- `@SaCheckHttpDigest`: HttpDigest校验 —— 只有通过 HttpDigest 认证后才能进入该方法。
|
- `@SaCheckHttpDigest`: HttpDigest校验 —— 只有通过 HttpDigest 认证后才能进入该方法。
|
||||||
- `@SaIgnore`:忽略校验 —— 表示被修饰的方法或类无需进行注解鉴权和路由拦截器鉴权。
|
|
||||||
- `@SaCheckDisable("comment")`:账号服务封禁校验 —— 校验当前账号指定服务是否被封禁。
|
- `@SaCheckDisable("comment")`:账号服务封禁校验 —— 校验当前账号指定服务是否被封禁。
|
||||||
|
- `@SaCheckSign`:API 签名校验 —— 用于跨系统的 API 签名参数校验。
|
||||||
|
- `@SaIgnore`:忽略校验 —— 表示被修饰的方法或类无需进行注解鉴权和路由拦截器鉴权。
|
||||||
|
|
||||||
Sa-Token 使用全局拦截器完成注解鉴权功能,为了不为项目带来不必要的性能负担,拦截器默认处于关闭状态<br>
|
Sa-Token 使用全局拦截器完成注解鉴权功能,为了不为项目带来不必要的性能负担,拦截器默认处于关闭状态<br>
|
||||||
因此,为了使用注解鉴权,**你必须手动将 Sa-Token 的全局拦截器注册到你项目中**
|
因此,为了使用注解鉴权,**你必须手动将 Sa-Token 的全局拦截器注册到你项目中**
|
||||||
|
Loading…
Reference in New Issue
Block a user