From 9b8b191bd57701ae04e8eed543291f703d5b4545 Mon Sep 17 00:00:00 2001 From: kezhen Date: Fri, 6 Jan 2023 09:27:36 +0800 Subject: [PATCH] =?UTF-8?q?IP=E5=9C=B0=E5=9D=80=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cache/contorller/CacheController.java | 17 ++++++++++++++ .../api/advice/ApiExceptionHandler.java | 1 - .../api/client/BeaconCacheClient.java | 6 +++++ .../api/filter/impl/ApiKeyCheckFilter.java | 12 ++++++---- .../api/filter/impl/FeeCheckFilter.java | 7 ++++++ .../api/filter/impl/IPCheckFilter.java | 23 +++++++++++++++++++ .../api/filter/CheckFilterContextTest.java | 2 -- 7 files changed, 60 insertions(+), 8 deletions(-) diff --git a/beacon-cache/src/main/java/com/mashibing/cache/contorller/CacheController.java b/beacon-cache/src/main/java/com/mashibing/cache/contorller/CacheController.java index e0477ad..826bd8f 100644 --- a/beacon-cache/src/main/java/com/mashibing/cache/contorller/CacheController.java +++ b/beacon-cache/src/main/java/com/mashibing/cache/contorller/CacheController.java @@ -7,6 +7,7 @@ import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; +import java.util.Set; /** * @author kezhen @@ -46,4 +47,20 @@ public class CacheController { log.info("【缓存模块】hGetAll 方法,获取key = {} 的数据 value = {}", key, value); return value; } + + @GetMapping("/cache/hget/{key}/{field}") + public Object hGet(@PathVariable(value = "key") String key, @PathVariable(value = "field") String field) { + log.info("【缓存模块】 hget 方法,获取key = {},field = {} 的数据", key, field); + Object value = redisClient.getMapItem(key, field); + log.info("【缓存模块】 hget 方法,获取key = {},field = {} 的数据 value = {}", key, field, value); + return value; + } + + @GetMapping("/cache/semember/{key}") + public Set semember(@PathVariable(value = "key") String key) { + log.info("【缓存模块 semember 方法】,获取key = {}", key); + Set value = redisClient.sGet(key); + log.info("【缓存模块 semember 方法】,获取key = {} 的数据 value = {}", key, value); + return value; + } } \ No newline at end of file diff --git a/beancon-api/src/main/java/com/mashibing/api/advice/ApiExceptionHandler.java b/beancon-api/src/main/java/com/mashibing/api/advice/ApiExceptionHandler.java index 1b2ae36..e9f8b5f 100644 --- a/beancon-api/src/main/java/com/mashibing/api/advice/ApiExceptionHandler.java +++ b/beancon-api/src/main/java/com/mashibing/api/advice/ApiExceptionHandler.java @@ -19,5 +19,4 @@ public class ApiExceptionHandler{ return R.error(ex); } - } diff --git a/beancon-api/src/main/java/com/mashibing/api/client/BeaconCacheClient.java b/beancon-api/src/main/java/com/mashibing/api/client/BeaconCacheClient.java index e87e88a..7aeb541 100644 --- a/beancon-api/src/main/java/com/mashibing/api/client/BeaconCacheClient.java +++ b/beancon-api/src/main/java/com/mashibing/api/client/BeaconCacheClient.java @@ -16,4 +16,10 @@ public interface BeaconCacheClient { @GetMapping("/cache/hgetall/{key}") Map hGetAll(@PathVariable(value = "key") String key); + + @GetMapping("/cache/hget/{key}/{field}") + Object hGet(@PathVariable(value = "key") String key,@PathVariable(value = "field") String field); + + @GetMapping("/cache/hget/{key}/{field}") + String hGetString(@PathVariable(value = "key") String key,@PathVariable(value = "field") String field); } diff --git a/beancon-api/src/main/java/com/mashibing/api/filter/impl/ApiKeyCheckFilter.java b/beancon-api/src/main/java/com/mashibing/api/filter/impl/ApiKeyCheckFilter.java index 4f3c3a2..bb6f565 100644 --- a/beancon-api/src/main/java/com/mashibing/api/filter/impl/ApiKeyCheckFilter.java +++ b/beancon-api/src/main/java/com/mashibing/api/filter/impl/ApiKeyCheckFilter.java @@ -14,7 +14,7 @@ import java.util.Map; /** * @author zjw - * @description 校验客户的apikey是否合法 + * @description 校验客户的apikey是否合法 */ @Service(value = "apikey") @Slf4j @@ -31,13 +31,15 @@ public class ApiKeyCheckFilter implements CheckFilter { Map clientBusiness = cacheClient.hGetAll(CacheConstant.CLIENT_BUSINESS + submit.getApikey()); //2. 如果为null,直接扔异常 - if(clientBusiness == null || clientBusiness.size() == 0){ - log.info("【接口模块-校验apikey】 非法的apikey = {}",submit.getApikey()); + if (clientBusiness == null || clientBusiness.size() == 0) { + log.info("【接口模块-校验apikey】 非法的apikey = {}", submit.getApikey()); throw new ApiException(ExceptionEnums.ERROR_APIKEY); } //3. 正常封装数据 -// submit.setClientId(Long.parseLong(clientBusiness.get("id") + "")); - log.info("【接口模块-校验apikey】 查询到客户信息 clientBusiness = {}",clientBusiness); + System.out.println("clientBusiness.get(\"id\") = " + clientBusiness.get("id")); + submit.setCliendId(Long.parseLong(clientBusiness.get("id") + "")); + log.info("【接口模块-校验apikey】 查询到客户信息 clientBusiness = {}", clientBusiness); + } } diff --git a/beancon-api/src/main/java/com/mashibing/api/filter/impl/FeeCheckFilter.java b/beancon-api/src/main/java/com/mashibing/api/filter/impl/FeeCheckFilter.java index f64df54..405468f 100644 --- a/beancon-api/src/main/java/com/mashibing/api/filter/impl/FeeCheckFilter.java +++ b/beancon-api/src/main/java/com/mashibing/api/filter/impl/FeeCheckFilter.java @@ -1,8 +1,10 @@ package com.mashibing.api.filter.impl; +import com.mashibing.api.client.BeaconCacheClient; import com.mashibing.api.filter.CheckFilter; import com.mashibing.common.model.StandardSubmit; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -12,8 +14,13 @@ import org.springframework.stereotype.Service; @Service(value = "fee") @Slf4j public class FeeCheckFilter implements CheckFilter { + + @Autowired + private BeaconCacheClient cacheClient; + @Override public void check(StandardSubmit submit) { log.info("【接口模块-校验客户余额】 校验ing…………"); + } } diff --git a/beancon-api/src/main/java/com/mashibing/api/filter/impl/IPCheckFilter.java b/beancon-api/src/main/java/com/mashibing/api/filter/impl/IPCheckFilter.java index 77b1b57..57e4991 100644 --- a/beancon-api/src/main/java/com/mashibing/api/filter/impl/IPCheckFilter.java +++ b/beancon-api/src/main/java/com/mashibing/api/filter/impl/IPCheckFilter.java @@ -1,9 +1,15 @@ package com.mashibing.api.filter.impl; +import com.mashibing.api.client.BeaconCacheClient; import com.mashibing.api.filter.CheckFilter; +import com.mashibing.common.constant.CacheConstant; +import com.mashibing.common.enums.ExceptionEnums; +import com.mashibing.common.exception.ApiException; import com.mashibing.common.model.StandardSubmit; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; /** * @author kezhen @@ -12,8 +18,25 @@ import org.springframework.stereotype.Service; @Service(value = "ip") @Slf4j public class IPCheckFilter implements CheckFilter { + + private final String IP_ADDRESS = "ipAddress"; + @Autowired + private BeaconCacheClient cacheClient; + @Override public void check(StandardSubmit submit) { log.info("【接口模块-校验IP】 校验ing…………"); + //根据 cacheClient 根据客户的apikey以及ipaddress去查询客户的IP白名单 + String ip = cacheClient.hGetString(CacheConstant.CLIENT_BUSINESS + submit.getApikey(), IP_ADDRESS); + submit.setIp(ip); + + // 如果ip白名单为null,或者ip与请求的ip一致,则放行 + if (StringUtils.isEmpty(ip) || ip.contains(submit.getRealIP())) { + log.info("【接口模块-校验IP】 客户端请求IP合法!"); + return; + } + + log.info("【接口模块-校验IP】 请求的ip不在白名单内"); + throw new ApiException(ExceptionEnums.IP_NOT_WHITE); } } diff --git a/beancon-api/src/test/java/com/mashibing/api/filter/CheckFilterContextTest.java b/beancon-api/src/test/java/com/mashibing/api/filter/CheckFilterContextTest.java index 8f3940d..ee1b0e7 100644 --- a/beancon-api/src/test/java/com/mashibing/api/filter/CheckFilterContextTest.java +++ b/beancon-api/src/test/java/com/mashibing/api/filter/CheckFilterContextTest.java @@ -6,8 +6,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import static org.junit.Assert.*; - /** * @author kezhen * @description