Dubbo隐式传参-Dubbo RpcContext的使用

it2023-09-21  86

package com.ght.park.biz.api.filter; import com.alibaba.fastjson.JSON; import com.ght.park.biz.api.shiro.JwtUtil; import com.ght.park.web.constants.ShiroConstants; import com.ght.park.web.dto.LoginUser; import org.apache.dubbo.common.extension.Activate; import org.apache.dubbo.rpc.*; /** * @Description dubbo拦截 * @Author ljh * @Date 2020:09:27 11:47 */ @Activate public class DubboAccountFilter implements Filter { @Override public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException { // 我这里是从JWT里拿到用户信息传递给Provider LoginUser user = null; try { user = JwtUtil.getLoginUser(); } catch (Exception e) { } RpcContext context = RpcContext.getContext(); if(user != null) { // 设置参数 context.setAttachment(ShiroConstants.ACCOUNT_INFO, JSON.toJSONString(user)); } else { context.removeAttachment(ShiroConstants.ACCOUNT_INFO); } return invoker.invoke(invocation); } }

在resources中加上文件com.alibaba.dubbo.rpc.Filter,注意了,这个东东是随着版本的变化可能会不同的 文件内容是:

dubboAccountFilter=com.ght.park.biz.api.filter.DubboAccountFilter

最后,配置文件application里面加上

dubbo: consumer: filter: dubboAccountFilter
最新回复(0)