Commit 8fa69882 authored by 万建斌's avatar 万建斌

2019-10-21 bug修复

parent f961580b
......@@ -77,10 +77,6 @@
<version>5.1.4</version>
</dependency>
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.pentahohub.nexus</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>20150820220052</version>
......@@ -116,7 +112,11 @@
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
......
......@@ -49,7 +49,7 @@ public class RSAEncryptUtil {
private static String CHARSET = "UTF-8";
public static void main(String[] args) throws Exception {
List<String> list = new ArrayList<>();
/* List<String> list = new ArrayList<>();
String[] ids = {"CN201310641619.6","CN85108702","CN86105552","CN85102316","CN85100424","CN85107140","CN85105258","CN87104444","CN86106501","CN85104116"};
for (int i = 0; i< 10; i++) {
......@@ -70,6 +70,48 @@ public class RSAEncryptUtil {
// }
// });
// thread.start();
}*/
test1("CN200930231881.8");
}
public static void test1(String id){
//生成公钥和私钥
Map keyMap = new HashMap();
keyMap.put("publicKey", "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCJLuCIAqbnO1eunvgp3vby+2s0RnpNq3OFNpIQqStuTVIbedulgS2mEPASi9k5eHlc5n7MlHZMxdNRlBzo81EVa7bVCdS9nw2kMPNJoKLUX0RA8NFIYpkXakocDwCl1J8kNWuN1dMwQOZ7JPZQJaer9aAY/tu2aVpJG+CKTbQHRQIDAQAB");
keyMap.put("privateKey", "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIku4IgCpuc7V66e+Cne9vL7azRGek2rc4U2khCpK25NUht526WBLaYQ8BKL2Tl4eVzmfsyUdkzF01GUHOjzURVrttUJ1L2fDaQw80mgotRfREDw0UhimRdqShwPAKXUnyQ1a43V0zBA5nsk9lAlp6v1oBj+27ZpWkkb4IpNtAdFAgMBAAECgYA8aHsRCXHrovMSfwgyj+9YwiPMCjjzGMuu3n/lfEkWsk+0r61sLP0oAo9k61ZFe2qd4RX3Cm0pk3dhlgJBBlwumHuX+E+i15gWJT/RBLzulJx6yUMs8SZsfLIyswHIuNUzhuCFk0GwzcHtG1w9VyQkklhUGebsCZbhKmNfdSsipQJBAMCiYmf4c+fdWBOJt+G094XKzchNtkB4QALBR9boJlbyOOqT4U/dNlPUb8PMs2GDfqhSML0lOL4Zg7hKWbpvtqMCQQC2TvtLnTBul2LfybClf0uWMsg9VXfIzkjuSJDlvprFksPaOnIBUI37s2CbWfOZJkgofeKPRPI+Tbl24nPhpvD3AkEAnHIE652bPF7GTi/V2Afp0o3vbFK4xkki61nfp0ipAon78X8iSINGwPRRxLn1oSdy8O63SJX3LGR6VmyDzOc3cwJATvlr9teDMYU2+ca/VRINxmT9RUSO/VgPU9nvmva0yT3IxfJnjJY+y3hrMyEGW6Ovwoq16GZvofm9i/iRRoExBQJAAjc8qZDi9PM0TrNc75V/xfUatKl52QWiCSFHn8biPYtKn02a3ZRnhp+Dk2UNRXSlnveULMa/tqI5MQ1VYleD6Q==");
System.out.println("随机生成的公钥为:" + MapUtils.getString(keyMap, "publicKey"));
System.out.println("随机生成的私钥为:" + MapUtils.getString(keyMap, "privateKey"));
String sign = "";
try {
/*
* 拼接待签名字符串 RSA2对应的函数
*/
Map map = new HashMap();
map.put("id", id);
String content = AlipaySignature.rsaEncrypt(JSON.toJSONString(map), MapUtils.getString(keyMap, "publicKey"), CHARSET);
System.out.println("拼接待签名字符串:"+content);
/*
* 对数据签名 RSA2对应的函数和密钥
*/
sign = AlipaySignature.rsaDecrypt(content, MapUtils.getString(keyMap, "privateKey"), CHARSET);
System.out.println("原始sign:" + sign);
Map result = JSON.parseObject(sign);
System.out.println(result);
}
catch (Exception e)
{
e.printStackTrace();
}
}
......
package com.cesgroup.kingkong.interceptor;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.internal.util.AlipaySignature;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
......@@ -69,24 +70,37 @@ public class TokenInterceptor implements HandlerInterceptor {
ApiResponse apiResponse =null;
String token = request.getHeader("token");
// String remoteAddr = ApiResultUtil.getUserIP(request);
String remoteAddr = "127.0.0.1";
if(StringUtil.isEmpty(token)){
apiResponse = ApiResultUtil.getApiResponse(null, ApiResponseEnum.AUTH_TOKEN_ERROR);
}else {
IPCheckEntity ipCheckEntity = ipCheckService.getOne(new QueryWrapper<IPCheckEntity>().eq("token", token));
IPCheckEntity ipCheckEntity = ipCheckService.getOne(new QueryWrapper<IPCheckEntity>().eq("ip_address", remoteAddr));
if(ipCheckEntity != null){
if (token.equals(ipCheckEntity.getToken())){
// 校验token是否过期
if(checkToken(ipCheckEntity)){
if (checkIp(request, token)){
if (checkSign(params)){
/* if (checkSign(params)){
IPCheckEntity entity = new IPCheckEntity();
entity.setLastCheckTime(new Date().getTime());
this.ipCheckService.update(entity, new UpdateWrapper<IPCheckEntity>().eq("token", token));
return true;
}else {
apiResponse = ApiResultUtil.getApiResponse(null, ApiResponseEnum.AUTH_SIGN_ERROR);
}*/
try {
Map<String, Object> requestParams = resolveParamsForSign(params);
log.info("--------------------SET PARAMS BEGIN--------------------");
for (Map.Entry entry : requestParams.entrySet()){
log.info(entry.getKey() + " : " + entry.getValue());
request.setAttribute(entry.getKey().toString(), entry.getValue());
}
}else {
apiResponse = ApiResultUtil.getApiResponse(null, ApiResponseEnum.AUTH_IP_ERROR);
log.info("--------------------SET PARAMS END----------------------");
return true;
}catch (Exception e){
e.printStackTrace();
apiResponse = ApiResultUtil.getApiResponse(null, ApiResponseEnum.AUTH_SIGN_ERROR);
}
}else {
......@@ -95,6 +109,9 @@ public class TokenInterceptor implements HandlerInterceptor {
}else {
apiResponse = ApiResultUtil.getApiResponse(null, ApiResponseEnum.AUTH_TOKEN_ERROR);
}
}else {
apiResponse = ApiResultUtil.getApiResponse(null, ApiResponseEnum.AUTH_IP_ERROR);
}
}
response.setCharacterEncoding("utf-8");
......@@ -114,22 +131,6 @@ public class TokenInterceptor implements HandlerInterceptor {
}
/**
* @Description: 校验IP白名单
* @Param: [request]
* @return: boolean
* @Author: Wanjianbin
* @Date: 2019/8/27
*/
private boolean checkIp(HttpServletRequest request, String token) {
String remoteAddr = ApiResultUtil.getUserIP(request);
int i = ipCheckService.getBaseMapper().selectCount(new QueryWrapper<IPCheckEntity>().eq("ip_address", remoteAddr).eq("token", token));
if(i < 1){
return false;
}
return true;
}
/**
* @Description: 校验签名
* @Param:
* @return:
......@@ -159,6 +160,29 @@ public class TokenInterceptor implements HandlerInterceptor {
}
/**
* @Description: 公钥解密
* @Param:
* @return:
* @Author: Wanjianbin
* @Date: 2019/8/27
*/
private Map resolveParamsForSign(Map params) throws Exception{
String sign = MapUtils.getString(params, "sign");
if (StringUtils.isEmpty(sign)){
return null;
}
SecretKeyEntity secretKeyEntity = secretKeyService.getById(1);
if(secretKeyEntity == null){
log.info("-------------------- secretKey SELECT ERROR --------------------");
return null;
}
String privateKey = secretKeyEntity.getPrivateKey();
return JSON.parseObject(AlipaySignature.rsaDecrypt(sign, privateKey, "UTF-8"));
}
/**
* 是否有权限
*
* @param handler
......
package com.cesgroup.kingkong.web;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -12,6 +9,8 @@ import org.springframework.web.bind.annotation.*;
import com.cesgroup.common.utils.RestAPIResult;
import com.cesgroup.kingkong.service.impl.QueryService;
import javax.servlet.http.HttpServletRequest;
@RestController
@RequestMapping("v1")
......@@ -21,7 +20,8 @@ public class SearchContrllor {
@Autowired
private QueryService queryService;
@RequestMapping(value = "queryById", method = { RequestMethod.POST })
public RestAPIResult<Object> query(String id) {
public RestAPIResult<Object> query(HttpServletRequest request) {
String id = request.getAttribute("id").toString();
RestAPIResult<Object> panResult = new RestAPIResult<Object>();
Map<String, Object> result = null;
if(StringUtils.isNotBlank(id)) {
......@@ -58,12 +58,17 @@ public class SearchContrllor {
return panResult;
}
/**查询论文接口(待完成)
/**查询论文接口
* @return
* RestAPIResult<Object>
*/
@RequestMapping(value = "queryArticleInfo", method = { RequestMethod.POST })
public RestAPIResult<Object> queryArticleInfo(@RequestParam Map<String, Object> params) {
public RestAPIResult<Object> queryArticleInfo(HttpServletRequest request) {
Map<String, Object> params = new HashMap<>();
params.put("authorName", request.getAttribute("authorName"));
params.put("current", request.getAttribute("current"));
params.put("affilorg", request.getAttribute("affilorg"));
RestAPIResult<Object> panResult = new RestAPIResult<Object>();
Map<String, Object> result = queryService.queryArticleInfo(params);
if(result == null || result.size() <= 0){
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment