com.alibaba.csp.sentinel.context origin为空 ,导致权限授权规

sentinel1.8改造,授权规则 com.alibaba.csp.sentinel.context origin为空 ,导致权限授权规则失效

原提问者GitHub用户Cmeetting

展开
收起
学习娃 2023-05-19 15:27:22 367 分享 版权
1 条回答
写回答
取消 提交回答
  • 问题找到了:

    com.alibaba.csp.sentinel.adapter.spring.webmvc.config.InterceptorConfig类addSpringMvcInterceptor方法中设置了请求来源解析器

    config.setOriginParser(new RequestOriginParser() { @Override public String parseOrigin(HttpServletRequest request) { return request.getHeader("S-user"); } });

    可以看到默认取的是请求头中的S-user参数 所以当请求头部中没有带S-user参数时就无法获取来源,所以就会影响授权规则的限流效果

    解决方案: 可以自定义请求来源解析器:

    import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.RequestOriginParser; import org.springframework.stereotype.Component;

    import javax.servlet.http.HttpServletRequest;

    @Component public class RequestOriginParserDefinition implements RequestOriginParser { @Override public String parseOrigin(HttpServletRequest httpServletRequest) { String origin = httpServletRequest.getHeader("Host"); return origin; } }

    原回答者GitHub用户Cmeetting

    2023-05-19 20:31:04
    赞同 展开评论
问答标签:
问答地址: