最近公司有業務需求,要對Dubbo接口調用者進行身份驗證,驗證通過才能調用,網上一些資料不夠全面,遂整理了一下.
在provider方定義一個filter,需要實現com.alibaba.dubbo.rpc.Filter(需要引入com.alibaba.dubbo依賴):
public class AuthorizationFilter implements Filter { @Override public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException { String token = invocation.getAttachment("token"); if("123456".equals(token)){ return invoker.invoke(invocation); } Return new RpcResult(); } }
在resources目錄META-INF/dubbo下新建text文件com.alibaba.dubbo.rpc.Filter,內容如下:
AuthorizationFilter = com.xxx.AuthorizationFilter
修改dubbo的provider配置文件,添加如下:
<dubbo:provider filter="AuthorizationFilter" />
在consumer方采用隱式傳參:RpcContext.getContext().setAttachment("token","123456");