zuul向下游传值问题

zuul 作为路由 filter校验token时需要向下游服务传递userId null值 的坑

	@Override
    public Object run() throws ZuulException {
    	 // ThreadLocal
        RequestContext ctx = RequestContext.getCurrentContext();
         // 获取当前请求和返回值
        HttpServletRequest request = ctx.getRequest();
        HttpServletResponse response = ctx.getResponse();
        // 1、验证Token有效性 -> 用户是否登录过
        final String requestHeader = request.getHeader(jwtProperties.getHeader());
        String authToken = null;
        // Bearer header.payload.sign
        if (requestHeader != null && requestHeader.startsWith("Bearer ")) {
            authToken = requestHeader.substring(7);
            //TODO 验证token
			// 验证通过把userId写入header 
			if(true){
				/*注意 addZuulRequestHeader方法会把name强制转为小写 
				*	userId 转为 userid 应直接全部使用小写 避免出现错误
				*/
				ctx.addZuulRequestHeader("userId", userId);
			}
        }
        ...
	}

	public class UserMemberController {
	
    @Autowired
    private HttpServletRequest request;
    
	@RequestMapping(value = "", method = RequestMethod.GET)
    public BaseResponseVO getPage() {
    	String userId = request.getHeader("userid");
    	...
    }
	}

addZuulRequestHeader方法会把name强制转为小写 下面是源码

 public void addZuulRequestHeader(String name, String value) {
        this.getZuulRequestHeaders().put(name.toLowerCase(), value);
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值