Commit fec21403 by 杨伟程
parents 825cf87d 226c869e
package com.makeit.api.external.filter;
import org.apache.commons.io.IOUtils;
import javax.servlet.ReadListener;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* @Description: 解决request.getInputStream()只能读取一次的问题
* @PackageName: net.dlet.dhdemo.utils.dhutils
* @Name: MyRequestWrapper
* @Author: cure
* @CreateDate: 2020/09/06 4:44
* @ModifyUser:
* @ModifyDate:
* @ModifyDesc: 修改内容
* @DayNameFull: 星期日
* @ProjectName: dhdemo
* @Version: 1.0
**/
public class MyRequestWrapper extends HttpServletRequestWrapper {
private volatile byte[] body;
public MyRequestWrapper(HttpServletRequest request) throws IOException {
super(request);
body = IOUtils.toByteArray(super.getInputStream());
}
public byte[] getBody() {
return body;
}
public void setBody(byte[] body) {
this.body = body;
}
@Override
public BufferedReader getReader() throws IOException {
return new BufferedReader(new InputStreamReader(getInputStream()));
}
@Override
public ServletInputStream getInputStream() throws IOException {
return new RequestBodyCachingInputStream(body);
}
private class RequestBodyCachingInputStream extends ServletInputStream {
private byte[] body;
private int lastIndexRetrieved = -1;
private ReadListener listener;
public RequestBodyCachingInputStream(byte[] body) {
this.body = body;
}
@Override
public int read() throws IOException {
if (isFinished()) {
return -1;
}
int i = body[lastIndexRetrieved + 1];
lastIndexRetrieved++;
if (isFinished() && listener != null) {
try {
listener.onAllDataRead();
} catch (IOException e) {
listener.onError(e);
throw e;
}
}
return i;
}
@Override
public boolean isFinished() {
return lastIndexRetrieved == body.length - 1;
}
@Override
public boolean isReady() {
return isFinished();
}
@Override
public void setReadListener(ReadListener listener) {
if (listener == null) {
throw new IllegalArgumentException("listener cann not be null");
}
if (this.listener != null) {
throw new IllegalArgumentException("listener has been set");
}
this.listener = listener;
if (!isFinished()) {
try {
listener.onAllDataRead();
} catch (IOException e) {
listener.onError(e);
}
} else {
try {
listener.onAllDataRead();
} catch (IOException e) {
listener.onError(e);
}
}
}
@Override
public int available() throws IOException {
return body.length - lastIndexRetrieved - 1;
}
@Override
public void close() throws IOException {
lastIndexRetrieved = body.length - 1;
body = null;
}
}
}
\ No newline at end of file
//package com.makeit.api.external.filter;
//
//import org.apache.commons.io.IOUtils;
//
//import javax.servlet.ReadListener;
//import javax.servlet.ServletInputStream;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletRequestWrapper;
//import java.io.BufferedReader;
//import java.io.IOException;
//import java.io.InputStreamReader;
//
///**
// * @Description: 解决request.getInputStream()只能读取一次的问题
// * @PackageName: net.dlet.dhdemo.utils.dhutils
// * @Name: MyRequestWrapper
// * @Author: cure
// * @CreateDate: 2020/09/06 4:44
// * @ModifyUser:
// * @ModifyDate:
// * @ModifyDesc: 修改内容
// * @DayNameFull: 星期日
// * @ProjectName: dhdemo
// * @Version: 1.0
// **/
//public class MyRequestWrapper extends HttpServletRequestWrapper {
//
// private volatile byte[] body;
//
// public MyRequestWrapper(HttpServletRequest request) throws IOException {
// super(request);
// body = IOUtils.toByteArray(super.getInputStream());
// }
//
// public byte[] getBody() {
// return body;
// }
//
// public void setBody(byte[] body) {
// this.body = body;
// }
//
// @Override
// public BufferedReader getReader() throws IOException {
// return new BufferedReader(new InputStreamReader(getInputStream()));
// }
//
// @Override
// public ServletInputStream getInputStream() throws IOException {
// return new RequestBodyCachingInputStream(body);
// }
//
// private class RequestBodyCachingInputStream extends ServletInputStream {
// private byte[] body;
// private int lastIndexRetrieved = -1;
// private ReadListener listener;
//
// public RequestBodyCachingInputStream(byte[] body) {
// this.body = body;
// }
//
// @Override
// public int read() throws IOException {
// if (isFinished()) {
// return -1;
// }
// int i = body[lastIndexRetrieved + 1];
// lastIndexRetrieved++;
// if (isFinished() && listener != null) {
// try {
// listener.onAllDataRead();
// } catch (IOException e) {
// listener.onError(e);
// throw e;
// }
// }
// return i;
// }
//
// @Override
// public boolean isFinished() {
// return lastIndexRetrieved == body.length - 1;
// }
//
// @Override
// public boolean isReady() {
// return isFinished();
// }
//
// @Override
// public void setReadListener(ReadListener listener) {
// if (listener == null) {
// throw new IllegalArgumentException("listener cann not be null");
// }
// if (this.listener != null) {
// throw new IllegalArgumentException("listener has been set");
// }
// this.listener = listener;
// if (!isFinished()) {
// try {
// listener.onAllDataRead();
// } catch (IOException e) {
// listener.onError(e);
// }
// } else {
// try {
// listener.onAllDataRead();
// } catch (IOException e) {
// listener.onError(e);
// }
// }
// }
//
// @Override
// public int available() throws IOException {
// return body.length - lastIndexRetrieved - 1;
// }
//
// @Override
// public void close() throws IOException {
// lastIndexRetrieved = body.length - 1;
// body = null;
// }
// }
//}
\ No newline at end of file
package com.makeit.api.external.filter;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @Description:
* @PackageName: net.dlet.dhdemo.configure
* @Name: RequestReplaceFilter
* @Author: cure
* @CreateDate: 2020/09/06 4:58
* @ModifyUser:
* @ModifyDate:
* @ModifyDesc: 修改内容
* @DayNameFull: 星期日
* @ProjectName: dhdemo
* @Version: 1.0
**/
@Component
public class RequestReplaceFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response,
FilterChain filterChain) throws ServletException, IOException {
if (!(request instanceof MyRequestWrapper)) {
request = new MyRequestWrapper(request);
}
filterChain.doFilter(request, response);
}
}
\ No newline at end of file
//package com.makeit.api.external.filter;
//
//import org.springframework.stereotype.Component;
//import org.springframework.web.filter.OncePerRequestFilter;
//
//import javax.servlet.FilterChain;
//import javax.servlet.ServletException;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//
///**
// * @Description:
// * @PackageName: net.dlet.dhdemo.configure
// * @Name: RequestReplaceFilter
// * @Author: cure
// * @CreateDate: 2020/09/06 4:58
// * @ModifyUser:
// * @ModifyDate:
// * @ModifyDesc: 修改内容
// * @DayNameFull: 星期日
// * @ProjectName: dhdemo
// * @Version: 1.0
// **/
//@Component
//public class RequestReplaceFilter extends OncePerRequestFilter {
//
// @Override
// protected void doFilterInternal(HttpServletRequest request,
// HttpServletResponse response,
// FilterChain filterChain) throws ServletException, IOException {
// if (!(request instanceof MyRequestWrapper)) {
// request = new MyRequestWrapper(request);
// }
// filterChain.doFilter(request, response);
// }
//}
//
//
\ No newline at end of file
package com.makeit.api.external.filter;
import com.makeit.api.external.util.RSAUtils;
import com.makeit.utils.old.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
@WebFilter(urlPatterns = { "/iot/external/*"})
public class SignAuthFilter implements Filter {
private static Logger logger = LoggerFactory.getLogger(SignAuthFilter.class);
@Override
public void init(FilterConfig filterConfig) {
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
try {
String sign = request.getHeader("sign");
if (StringUtils.isEmpty(sign)) {
response.sendError(403, "Forbidden");
return;
}
logger.info("getted Authorization is ---> " + sign);
// 获取客户端ip
/* String ip = IpUtil.getIpAddr(request);
logger.info("getted ip is ---> " + ip);*/
MyRequestWrapper requestWrapper = new MyRequestWrapper(request);
String bodyString = new String(requestWrapper.getBody(), StandardCharsets.UTF_8);
logger.info("getted requestbody data is ---> " + bodyString);
String decryptJson = RSAUtils.privateDecrypt(sign, RSAUtils.getPrivateKey(RSAUtils.PRIVATE_KEY), "UTF-8");
boolean couldPass = decryptJson.equals(bodyString);
if (couldPass) {
// 放行
chain.doFilter(requestWrapper, response);
return;
}
response.sendError(403, "Forbidden");
} catch (Exception e) {
logger.error("验证失败: -> " + e.getMessage(), e);
response.sendError(403, "Forbidden");
}
}
@Override
public void destroy() {
}
}
//package com.makeit.api.external.filter;
//
//import com.makeit.api.external.util.RSAUtils;
//import com.makeit.utils.old.StringUtils;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import javax.servlet.*;
//import javax.servlet.annotation.WebFilter;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//import java.nio.charset.StandardCharsets;
//
//
//@WebFilter(urlPatterns = { "/iot/external/*"})
//public class SignAuthFilter implements Filter {
//
// private static Logger logger = LoggerFactory.getLogger(SignAuthFilter.class);
//
//
//
// @Override
// public void init(FilterConfig filterConfig) {
// }
//
// @Override
// public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
// throws IOException {
// HttpServletRequest request = (HttpServletRequest) req;
// HttpServletResponse response = (HttpServletResponse) res;
// try {
// String sign = request.getHeader("sign");
// if (StringUtils.isEmpty(sign)) {
// response.sendError(403, "Forbidden");
// return;
// }
// logger.info("getted Authorization is ---> " + sign);
//
// // 获取客户端ip
///* String ip = IpUtil.getIpAddr(request);
// logger.info("getted ip is ---> " + ip);*/
//
// MyRequestWrapper requestWrapper = new MyRequestWrapper(request);
// String bodyString = new String(requestWrapper.getBody(), StandardCharsets.UTF_8);
// logger.info("getted requestbody data is ---> " + bodyString);
//
// String decryptJson = RSAUtils.privateDecrypt(sign, RSAUtils.getPrivateKey(RSAUtils.PRIVATE_KEY), "UTF-8");
//
// boolean couldPass = decryptJson.equals(bodyString);
// if (couldPass) {
// // 放行
// chain.doFilter(requestWrapper, response);
// return;
// }
// response.sendError(403, "Forbidden");
// } catch (Exception e) {
// logger.error("验证失败: -> " + e.getMessage(), e);
// response.sendError(403, "Forbidden");
// }
// }
//
// @Override
// public void destroy() {
//
// }
//
//}
//
......@@ -11,6 +11,8 @@ public class DeviceProperties {
private Integer numberValue;
@ApiModelProperty("属性名称")
private String propertyName;
@ApiModelProperty("属性")
private String property;
private Long timestamp;
private String type;
@ApiModelProperty("属性值")
......
......@@ -295,6 +295,7 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
for (String s : propertiesArr) {
DeviceProperties deviceProperties = devicePropertiesOperateService.deviceRead(dto.getDeviceId(), s);
if (deviceProperties != null) {
deviceProperties.setProperty(s);
devicePropertiesList.add(deviceProperties);
}
}
......
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 sign in to comment