本文實現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並加入黑名單,那麼我們會發現請求不會通過了。
小夥伴可以自己試試其他的玩法,此處就省略了