受权应该知足不一样的粒度:
bash
在Dubbo中,provider能够经过实现com.alibaba.dubbo.rpc.Filter对接口的调用进行处理:
app
/**
* 处理Dubbo接口受权
*/
public class AuthorizationFilter implements Filter {
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
if (受权经过) {
return invoker.invoke(invocation);
}
else {
// TODO 错误处理
}
}
}
复制代码
<dubbo:provider filter="自定义filter的名称"/>
复制代码
RpcContext.getContext().setAttachment("appId", "someAppId");
复制代码
String appId = invocation.getAttachment("appId");
复制代码
public class ConsumerContextFilter implements Filter {
/*
* TODO 经过读取配置或注入appId
*/
private String appId;
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
// 设置appId
RpcContext.getContext().setAttachment("appId", appId);
// 执行接口
return invoker.invoke(invocation);
}
}
复制代码