From 4a347c0ab4b88fd792d24d30bed36b1fa769d3a2 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Mon, 15 Jul 2024 14:14:04 +0800 Subject: [PATCH] 逻辑 --- src/main/java/cc/mrbird/febs/common/interceptor/DappInterceptor.java | 42 +++++++++++++++++++++++++++--------------- 1 files changed, 27 insertions(+), 15 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/interceptor/DappInterceptor.java b/src/main/java/cc/mrbird/febs/common/interceptor/DappInterceptor.java index c906df8..c800926 100644 --- a/src/main/java/cc/mrbird/febs/common/interceptor/DappInterceptor.java +++ b/src/main/java/cc/mrbird/febs/common/interceptor/DappInterceptor.java @@ -2,18 +2,20 @@ import cc.mrbird.febs.common.contants.AppContants; import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.properties.SystemProperties; import cc.mrbird.febs.common.utils.LoginUserUtil; import cc.mrbird.febs.common.utils.RedisUtils; import cc.mrbird.febs.common.utils.SpringContextUtil; import cc.mrbird.febs.dapp.entity.DappMemberEntity; import cc.mrbird.febs.dapp.mapper.DappMemberDao; import cn.hutool.core.util.StrUtil; +import cn.hutool.crypto.SecureUtil; +import cn.hutool.crypto.asymmetric.KeyType; +import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.web.servlet.HandlerInterceptor; -import org.web3j.crypto.Hash; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -30,6 +32,8 @@ private final DappMemberDao dappMemberDao = SpringContextUtil.getBean(DappMemberDao.class); private final RedisUtils redisUtils = SpringContextUtil.getBean(RedisUtils.class); + private SystemProperties systemProperties = SpringContextUtil.getBean(SystemProperties.class); + @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if ("OPTIONS".equals(request.getMethod().toUpperCase())) { @@ -38,7 +42,6 @@ String headAddress = request.getHeader("address"); String key = request.getHeader("key"); String path = request.getServletPath().replace("/dapi", ""); - log.info("进入拦截:{}, {}, {}", headAddress, path, key); String chain = request.getHeader("chain"); if (StrUtil.isBlank(headAddress) || StrUtil.isBlank(key)) { @@ -46,23 +49,29 @@ return false; } - Map<Object, Object> signKey = redisUtils.hmget(AppContants.REDIS_KEY_SIGN); - Object signObj = signKey.get(headAddress); + if (!systemProperties.isDebug()) { + Map<Object, Object> signKey = redisUtils.hmget(AppContants.REDIS_KEY_SIGN); + Object signObj = signKey.get(headAddress); - if (signObj == null) { - responseUnAuth(response); - return false; - } - String sign = (String) signObj; + if (signObj == null) { + responseUnAuth(response); + return false; + } + String sign = (String) signObj; - String calKey = LoginUserUtil.sha3(sign + path + headAddress).replace("0x", ""); - if (!calKey.equals(key)) { - responseUnAuth(response); - return false; + String calKey = LoginUserUtil.sha3(sign + path + headAddress).replace("0x", ""); + if (!calKey.equals(key)) { + responseUnAuth(response); + return false; + } } DappMemberEntity memberEntity = dappMemberDao.selectByAddress(headAddress, null); if (memberEntity == null) { + responseUnAuth(response); + return false; + } + if(AppContants.INT_FLAG_Y != memberEntity.getAccountStatus()){ responseUnAuth(response); return false; } @@ -74,7 +83,10 @@ private void responseUnAuth(HttpServletResponse response) throws IOException { response.setCharacterEncoding("UTF-8"); response.setContentType("application/json; charset=utf-8"); - response.getWriter().write(new ObjectMapper().writeValueAsString(new FebsResponse().code(HttpStatus.UNAUTHORIZED))); + + FebsResponse code = new FebsResponse().code(HttpStatus.UNAUTHORIZED); + String encryptBase64 = SecureUtil.rsa(AppContants.RESP_PRIVATE_KEY, AppContants.RESP_PUBLIC_KEY).encryptBase64(JSONObject.toJSONString(code).getBytes(), KeyType.PublicKey); + response.getWriter().write(new ObjectMapper().writeValueAsString(encryptBase64)); } public static void main(String[] args) { -- Gitblit v1.9.1