受權應該知足不一樣的粒度:
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);
}
}
複製代碼