mirror of
https://gitee.com/dromara/sa-token.git
synced 2024-12-02 11:57:40 +08:00
docs 补充Dubbo插件文档
This commit is contained in:
parent
6b80afe806
commit
658284bed3
@ -60,7 +60,7 @@ RPC 模式的调用,可以让我们像调用本地方法一样完成服务通
|
||||
|
||||
我们有两种方式完成整合。
|
||||
|
||||
##### 方式一、使用配置
|
||||
##### 方式一、使用配置(推荐)
|
||||
|
||||
直接在 `application.yml` 配置即可:
|
||||
|
||||
@ -70,8 +70,14 @@ sa-token:
|
||||
check-id-token: true
|
||||
```
|
||||
|
||||
成功后, [ 被调用端 ] 可以自由使用 `StpUtil` 中的方法,如:
|
||||
``` java
|
||||
String appId = StpUtil.getSession().get("appId");
|
||||
```
|
||||
|
||||
|
||||
##### 方式二、自建 Dubbo 过滤器校验
|
||||
> 适用于需要另外传递自定义附加数据( attachment )的情况
|
||||
|
||||
1、在 [ 调用端 ] 的 `\resources\META-INF\dubbo\` 目录新建 `org.apache.dubbo.rpc.Filter` 文件
|
||||
``` html
|
||||
@ -99,7 +105,9 @@ public class DubboConsumerFilter implements Filter {
|
||||
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
|
||||
|
||||
// 追加 Id-Token 参数
|
||||
RpcContext.getContext().setAttachment(SaIdUtil.ID_TOKEN, SaIdUtil.getToken());
|
||||
RpcContext.getContext().setAttachment(SaIdUtil.ID_TOKEN, SaIdUtil.getToken());
|
||||
// 如果有其他自定义附加数据,如租户
|
||||
// RpcContext.getContext().setAttachment("tenantContext", tenantContextBO);
|
||||
|
||||
// 开始调用
|
||||
return invoker.invoke(invocation);
|
||||
@ -138,6 +146,9 @@ public class DubboProviderFilter implements Filter {
|
||||
String idToken = invocation.getAttachment(SaIdUtil.ID_TOKEN);
|
||||
SaIdUtil.checkToken(idToken);
|
||||
|
||||
// 取出其他自定义附加数据
|
||||
// TenantContext tenantContext = invocation.getAttachment("tenantContext");
|
||||
|
||||
// 开始调用
|
||||
return invoker.invoke(invocation);
|
||||
}
|
||||
@ -148,3 +159,12 @@ public class DubboProviderFilter implements Filter {
|
||||
|
||||
然后我们就可以进行安全的 RPC 调用了,不带有 Id-Token 参数的调用都会抛出异常,无法调用成功。
|
||||
|
||||
### 题外话
|
||||
一定程度上来说,这样使得Dubbo调用变成“有状态”了。若项目或团队风格有要求,使用“无状态”的调用方式也未尝不可,只是略显繁琐,如:
|
||||
``` java
|
||||
// 取C端用户信用
|
||||
appMemberDubboService.getCredit(UserContext currentUser, TenantContext tenantContext);
|
||||
|
||||
// 后台管理分页列表支付订单
|
||||
paymentOrderDubboService.adminPage(UserContext currentUser, TenantContext tenantContext, PageParam pageParam, AdminPagePaymentOrderDTO dto);
|
||||
```
|
Loading…
Reference in New Issue
Block a user