本文实现sentinel实现区分来源
一、为什么实现区分来源
在前面的博客中,我们在设置流控规则时我们发现有个针对来源,设置授权规则时我们发现有个流控应用,那两个到底怎么用的呢?下面为你揭晓
二、实现
2.1 新建类实现 RequestOriginParser 接口
@Component
public class MyRequestOriginParser implements RequestOriginParser {
@Override
public String parseOrigin(HttpServletRequest request) {
// 从请求参数中获取名为 origin的参数并返回
// 如果获取不到origin参数,那么就抛异常
String origin = request.getParameter("origin");
if (StringUtils.isBlank(origin)) {
throw new IllegalArgumentException("origin must be specified");
}
return origin;
}
}
此处是将参数放置在url 后面,在项目的实际开发过程中,我们应该放在header中
三、验证
1. 如果我在url中不加入origin这个参数那么将会报错
2. 在设置限流规则中如果把针对来源设置成xxx,那么xxx将会被限流
3. 在设置授权规则的时候,我们把流控应用设置成xxx并加入黑名单,那么我们会发现请求不会通过了。
小伙伴可以自己试试其他的玩法,此处就省略了