Dubboの暗黙的なパラメータ転送-DubboRpcContextの使用

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);
    }
}

ここに画像の説明を挿入
ファイルcom.alibaba.dubbo.rpc.Filterをリソースに追加します。バージョンの変更により、この
内容が異なる場合があることに注意してください。ファイル内容は次のとおりです。

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

最後に、構成ファイルアプリケーションを追加します

dubbo:
  consumer:
    filter: dubboAccountFilter

おすすめ

転載: blog.csdn.net/qq_38238041/article/details/109189389