日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Spring boot攔截器實現IP黑名單的完整步驟

瀏覽:49日期:2023-05-11 14:25:41

一·業務場景和需要實現的功能

以redis作為IP存儲地址實現。

業務場景:針對秒殺活動或者常規電商業務場景等,防止惡意腳本不停的刷接口。

實現功能:寫一個攔截器攔截掉黑名單IP,額外增加一個接口,將ip地址添加到redis中,并且返回redis中當前全部ip

二·Springboot中定義一個攔截器

@Order(0)@Aspect@Componentpublic class AopInterceptor { /** * 定義攔截器規則 */ @Pointcut('execution(* com.test.test.api.controller.test.test.*(..))') public void pointCut() { } /** * 攔截器具體實現 * * @throws Throwable */ @Around(value = 'pointCut()') public Object around(ProceedingJoinPoint point) throws Throwable { try { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); //判斷是否為黑名單用戶 String ip = getIpAddress(request); if (checkIpBlack(ip)) { //ip在黑名單中返回false //return false; DefaultResponse defaultResponse = new DefaultResponse(); defaultResponse.setCode(-1); defaultResponse.setMessage('ip在黑名單中,拒絕訪問.'); SysLogHelper.log('IpBlackAopInterceptor', '當前請求ip' + ip, 'ip在黑名單中,拒絕訪問'); return defaultResponse; } else { //ip不在黑名單中返回true SysLogHelper.log('IpBlackAopInterceptor', '當前請求ip' + ip, 'ip正常,允許訪問'); return point.proceed(); } } catch (Exception e) { e.printStackTrace(); SysLogHelper.error('IpBlackAopInterceptor黑名單攔截異常:', ExceptionUtils.getMessage(e) + '詳細' + ExceptionUtils.getStackTrace(e), null); } return point.getArgs(); } //對比當前請求IP是否在黑名單中,注意(對比黑名單ip存放在redis中) public boolean checkIpBlack(String ip) throws Exception { IpBlackBody body = new IpBlackBody(); body = cacheHelper.get('IpBlack:ips', IpBlackBody.class); if (body != null) { for (int i = 0; i < body.getIp().length; i++) { if (body.getIp()[i].equals(ip)) return true; } } return false; }}

三·獲取請求主機IP地址

public final static String getIpAddress(HttpServletRequest request) throws IOException { // 獲取請求主機IP地址,如果通過代理進來,則透過防火墻獲取真實IP地址 String ip = request.getHeader('x-forwarded-for'); if (ip == null || ip.length() == 0 || 'unknown'.equalsIgnoreCase(ip)) { if (ip == null || ip.length() == 0 || 'unknown'.equalsIgnoreCase(ip)) { ip = request.getHeader('Proxy-Client-IP'); } if (ip == null || ip.length() == 0 || 'unknown'.equalsIgnoreCase(ip)) { ip = request.getHeader('WL-Proxy-Client-IP'); } if (ip == null || ip.length() == 0 || 'unknown'.equalsIgnoreCase(ip)) { ip = request.getHeader('HTTP_CLIENT_IP'); } if (ip == null || ip.length() == 0 || 'unknown'.equalsIgnoreCase(ip)) { ip = request.getHeader('HTTP_X_FORWARDED_FOR'); } if (ip == null || ip.length() == 0 || 'unknown'.equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } } else if (ip.length() > 15) { String[] ips = ip.split(','); for (int index = 0; index < ips.length; index++) { String strIp = (String) ips[index]; if (!('unknown'.equalsIgnoreCase(strIp))) { ip = strIp; break; } } } return ip; }

四·擴展接口,實現將黑名單IP寫入redis當中,并返回當前所有黑名單IP

@RestControllerpublic class IpBlackController { @Autowired(required = false) private CacheHelper cacheHelper; @PostMapping('/testIpBlack') public IpBlackBody IpBlack(@RequestBody IpBlackBody ipBlackBody) throws Exception { IpBlackBody body = new IpBlackBody(); body = cacheHelper.get('IpBlack:ips', IpBlackBody.class); if (body != null) { //拼接當前IP與redis中現有ip linkArray(body.getIp(), ipBlackBody.getIp()); //將數據賦給body body.setIp(linkArray(body.getIp(), ipBlackBody.getIp())); //setex中第二個參數時間為S,根據業務場景相應調整,此處我設置為一天 //將body中拼接后的ip地址數據寫入redis中 cacheHelper.setex('IpBlack:ips', 86400, body); } else { cacheHelper.setex('IpBlack:ips', 86400, ipBlackBody); body = cacheHelper.get('IpBlack:ips', IpBlackBody.class); return body; } return body; } //拼接兩個String[]的方法 public static String[] linkArray(String[] array1, String[] array2) { List<String> list = new ArrayList<>(); if (array1 == null) { return array2; } if (array2 == null) { return array1; } for (int i = 0; i < array1.length; i++) { list.add(array1[i]); } for (int i = 0; i < array2.length; i++) { list.add(array2[i]); } String[] returnValue = new String[list.size()]; for (int i = 0; i < list.size(); i++) { returnValue[i] = list.get(i); } return returnValue; }}

總結:

首先根據需要攔截的controller攔截響應請求controller層,然后根據編寫相關攔截器的具體實現,其中包含兩部主要操作:

1.獲取到遠程請求主機的實際ip地址

2.對比當前ip是否在黑名單中(此次操作需要讀取redis中的黑名單ip列表)

然后根據當前需求增加了一個redis接口,實現將需要封禁的IP地址增加到redis黑名單中并返回當前所有的黑名單IP地址。

至此:至此springboot通過攔截器實現攔截黑名單功能已經實現。

到此這篇關于Spring boot攔截器實現IP黑名單的文章就介紹到這了,更多相關Springboot攔截器IP黑名單內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩精品视频一区二区三区| 成人国产精品久久| 午夜精品久久久久久久久久蜜桃| 日韩中文在线电影| 麻豆精品一区二区综合av| 午夜亚洲福利| 丝袜诱惑制服诱惑色一区在线观看| 午夜在线一区二区| 国产精品二区不卡| 欧美日韩免费观看视频| 岛国av免费在线观看| 欧美精品91| 丝袜av一区| 国产精品v亚洲精品v日韩精品 | 国产精品调教| 亚洲不卡视频| 美女在线视频一区| 国产精品自拍区| 日本久久二区| 日韩成人精品一区| 涩涩涩久久久成人精品| 中文字幕日韩亚洲| 国产欧美二区| japanese国产精品| 日韩精品第一| 久久一区国产| 亚洲一区二区av| 欧美日韩精品一本二本三本| 欧美三级网址| 欧美日韩视频| 国产精品综合| 成人国产精品久久| 国产精品免费看| 亚洲精品少妇| 日韩av一区二区三区四区| 亚洲午夜免费| 精品国产乱码久久久| 黄色免费成人| 最新日韩av| 夜夜嗨一区二区| 麻豆亚洲精品| 欧美一区二区性| 日韩黄色在线观看| 国产日韩欧美| 9色精品在线| 91嫩草精品| 偷拍欧美精品| 高清日韩欧美| 日本精品一区二区三区在线观看视频| 国产成人精品一区二区免费看京 | 国产亚洲精品自拍| 精品国产午夜肉伦伦影院| 国产精品日本| 一区二区三区四区在线看| 视频一区视频二区中文字幕| 国产精品亚洲欧美一级在线| 久久久久久亚洲精品美女| 国产96在线亚洲| 精品久久网站| 国产精品久久久久久久免费软件| 日韩精品一区二区三区免费观看| 影视先锋久久| 国产一区亚洲| 最近高清中文在线字幕在线观看1| 免费日韩一区二区| 久久精品高清| 99精品小视频| 亚洲另类av| 国产精品午夜一区二区三区| 蜜桃久久久久久| 国产精品国产三级国产在线观看| 伊人久久成人| 丝袜国产日韩另类美女| 日韩在线免费| 国产极品嫩模在线观看91精品| 丝袜亚洲精品中文字幕一区| 亚洲国产成人精品女人| 日韩欧美另类一区二区| 国产高潮在线| 91精品一区国产高清在线gif| 视频福利一区| 一级欧洲+日本+国产| 好吊视频一区二区三区四区| 欧美午夜不卡| 亚洲精品少妇| 麻豆精品在线视频| 久久免费黄色| 欧美日韩中文一区二区| 亚洲午夜黄色| 丝袜亚洲精品中文字幕一区| 国产探花在线精品| 成人国产精选| 91久久久久| 国产精品亚洲综合色区韩国| 中文日韩在线| 日本国产亚洲| 精品九九在线| 女人天堂亚洲aⅴ在线观看| 免费不卡在线观看| 亚洲三级毛片| 国产一区二区三区不卡视频网站| 欧美片第1页| 狠狠操综合网| 国产精品一二| 国产精品99一区二区| 99香蕉国产精品偷在线观看| 欧美自拍一区| 欧美一级二区| 亚洲精品成a人ⅴ香蕉片| 欧美激情国产在线| 日本h片久久| av不卡在线看| 久久久精品网| 国产a亚洲精品| 日韩国产欧美一区二区三区| 日韩精品欧美激情一区二区| 日本欧美一区二区| 欧美特黄a级高清免费大片a级| 免费成人av在线播放| 欧美日韩高清| 亚洲成人不卡| 加勒比视频一区| 国产精品视频一区视频二区| 亚洲理论在线| 日韩制服丝袜先锋影音| 久久人人97超碰国产公开结果| 国产精品一区二区三区四区在线观看 | 久久午夜影院| 欧美日本二区| 另类亚洲自拍| 国产婷婷精品| 国产精品试看| 夜久久久久久| 天使萌一区二区三区免费观看| 日韩欧美一区二区三区免费观看| 狂野欧美性猛交xxxx| 国产精品一区二区99| 国产精品资源| 国内精品伊人| 日本国产精品| 国产毛片一区| 婷婷综合国产| 国产精品久久国产愉拍| 欧美a在线观看| 欧美激情麻豆| 亚洲精品在线影院| 樱桃成人精品视频在线播放| 美女被久久久| 国产精品国码视频| 国产 日韩 欧美 综合 一区| 久久久久91| 老司机精品久久| 麻豆精品蜜桃视频网站| 在线观看精品| 老司机精品久久| 麻豆一区二区三| japanese国产精品| 日韩三级视频| 久久精品伊人| 久久精品影视| 最新亚洲国产| 成人精品动漫一区二区三区| 亚洲资源av| 精品国产一区二区三区av片| 欧美综合另类| 国产精品亚洲一区二区在线观看| 九色porny丨国产首页在线| 蜜臀精品一区二区三区在线观看| 国产精品手机在线播放| 欧美1级日本1级| 久久99精品久久久野外观看| 亚洲成人精选| 精品精品99| 日本强好片久久久久久aaa| 久久中文欧美| 视频在线观看91| 日本а中文在线天堂| 欧美色综合网| 久久xxxx精品视频| 日韩不卡视频在线观看| 日韩精品久久久久久久软件91| 久久久精品久久久久久96| 久久国产精品色av免费看| 黑丝一区二区三区| 国内精品伊人| 国产精品视频3p| 亚洲精品女人| 蜜臀久久久99精品久久久久久| 99久久精品国产亚洲精品| 精品一区二区三区在线观看视频 | 欧美一级网站| 鲁大师影院一区二区三区| 欧美日韩水蜜桃| se01亚洲视频| 97视频热人人精品免费| 美女视频免费精品| 国产精品第一| 卡一卡二国产精品| 国产精品99在线观看| 精品视频亚洲|