Commit 95bcea84 authored by guozhipeng's avatar guozhipeng

odata鉴权

parent e49df974
...@@ -112,15 +112,18 @@ public class OperateAuthFilter implements Filter { ...@@ -112,15 +112,18 @@ public class OperateAuthFilter implements Filter {
} }
} }
} }
//TODO 郭智朋 测试中 处理ODATA接口 //处理ODATA接口 只有odata接口需要从cookies中读取参数
/*Cookie[] cookies = request.getCookies(); if (Pattern.matches("(.*/odata/v4/.*)", uri)) {
if (appKey == null && cookies != null && cookies.length > 0 && "/odata/v4/orderService/$batch".equals(uri)) { if (cookies == null || cookies.length == 0) {
List<Cookie> cookiesList = Arrays.asList(cookies); Result<Object> wrapResult = Result.error("odata请求 cookies 不能为空!");
writeResult(response, wrapResult);
return;
}
//appKey partyId4Rule roleTypeId4Rule language //appKey partyId4Rule roleTypeId4Rule language
String partyId4Rule = null; String partyId4Rule = null;
String roleTypeId4Rule = null; String roleTypeId4Rule = null;
String language = null; String language = null;
for (Cookie cookie : cookiesList) { for (Cookie cookie : cookies) {
if ("appKey".equals(cookie.getName())) { if ("appKey".equals(cookie.getName())) {
appKey = cookie.getValue(); appKey = cookie.getValue();
} }
...@@ -134,9 +137,28 @@ public class OperateAuthFilter implements Filter { ...@@ -134,9 +137,28 @@ public class OperateAuthFilter implements Filter {
language = cookie.getValue(); language = cookie.getValue();
} }
} }
if (appKey == null || "".equals(appKey)) {
Result<Object> wrapResult = Result.error("odata请求 appKey 不能为空!");
writeResult(response, wrapResult);
return;
}
if (partyId4Rule == null || "".equals(partyId4Rule)) {
Result<Object> wrapResult = Result.error("odata请求 partyId4Rule 不能为空!");
writeResult(response, wrapResult);
return;
}
if (roleTypeId4Rule == null || "".equals(roleTypeId4Rule)) {
Result<Object> wrapResult = Result.error("odata请求 roleTypeId4Rule 不能为空!");
writeResult(response, wrapResult);
return;
}
if (language == null || "".equals(language)) {
Result<Object> wrapResult = Result.error("odata请求 language 不能为空!");
writeResult(response, wrapResult);
return;
}
// 返回请求体数据 是否通过鉴权(True: 通过, Flase: 失败) // 返回请求体数据 是否通过鉴权(True: 通过, Flase: 失败)
if ( if (
!StringUtils.isEmpty(appKey) &&
CommonConstant.userAuthenticationMap.containsKey(appKey) && CommonConstant.userAuthenticationMap.containsKey(appKey) &&
CommonConstant.userAuthenticationMap.get(appKey).getIsPassAuth() == Boolean.TRUE CommonConstant.userAuthenticationMap.get(appKey).getIsPassAuth() == Boolean.TRUE
) { ) {
...@@ -147,7 +169,7 @@ public class OperateAuthFilter implements Filter { ...@@ -147,7 +169,7 @@ public class OperateAuthFilter implements Filter {
String cdsView = https[0]; String cdsView = https[0];
JSONObject param = new JSONObject(); JSONObject param = new JSONObject();
//"url": "orderService/OrderHeaderItemView", //"url": "orderService/OrderHeaderItemView",
// "param": "$filter=(contains(ID, '61fe46ab-8226-4735-8384-f612ed648819'))", //"param": "$filter=(contains(ID, '61fe46ab-8226-4735-8384-f612ed648819'))",
String[] urlparam = cdsView.split("\\?"); String[] urlparam = cdsView.split("\\?");
param.put("url", urlparam[0]); param.put("url", urlparam[0]);
param.put("param", urlparam.length>1?urlparam[1]:""); param.put("param", urlparam.length>1?urlparam[1]:"");
...@@ -158,13 +180,18 @@ public class OperateAuthFilter implements Filter { ...@@ -158,13 +180,18 @@ public class OperateAuthFilter implements Filter {
if (requestResult.isSuccess()) { if (requestResult.isSuccess()) {
requestParamStrNew = gets[0] + "GET " + requestResult.getResult() + " HTTP" + https[1]; requestParamStrNew = gets[0] + "GET " + requestResult.getResult() + " HTTP" + https[1];
} else { } else {
return;// 跳过后面的认证 writeResult(response, requestResult);
return;
} }
log.info("paramStr:{}, isJson:{}", requestParamStrNew, JsonUtil.isJsonObject(requestParamStr)); log.info("paramStr:{}, isJson:{}", requestParamStrNew, JsonUtil.isJsonObject(requestParamStr));
request = new AuthHttpServletRequest(request, requestParamStrNew, "appKey", appKey); request = new AuthHttpServletRequest(request, requestParamStrNew, "appKey", appKey);
} else {
Result<Object> wrapResult = Result.error("未通过鉴权!");
writeResult(response, wrapResult);
return;
} }
} }
log.info("requestIP:{}, requestURI:{}, method:{}, appKey:{}", ip, uri, request.getMethod(), appKey);*/ log.info("requestIP:{}, requestURI:{}, method:{}, appKey:{}", ip, uri, request.getMethod(), appKey);
// 日志文件认证 // 日志文件认证
if (uri.startsWith("/logs/")) { if (uri.startsWith("/logs/")) {
if (StringUtils.isBlank(tokenForLogs)) { if (StringUtils.isBlank(tokenForLogs)) {
...@@ -179,20 +206,13 @@ public class OperateAuthFilter implements Filter { ...@@ -179,20 +206,13 @@ public class OperateAuthFilter implements Filter {
filterChain.doFilter(request, servletResponse); filterChain.doFilter(request, servletResponse);
return;// 跳过后面的认证 return;// 跳过后面的认证
} }
// OData接口仅允许本机访问
if (Pattern.matches("(.*/odata/v4/.*)", uri)) {
if ("127.0.0.1".equals(ip) || "0:0:0:0:0:0:0:1".equals(ip)) {// 本机访问
} else {
if (!Pattern.matches("(.*exampleService/ExampleView.*)", uri)) {
return;
}
}
}
// 禁止非POST/GET方式访问 // 禁止非POST/GET方式访问
/*if (!request.getMethod().equals("POST") && !request.getMethod().equals("GET")) { if (!request.getMethod().equals("POST") && !request.getMethod().equals("GET")) {
Result<Object> wrapResult = Result.error("禁止非POST/GET方式访问!");
writeResult(response, wrapResult);
return; return;
} }
if (request.getMethod().equals("GET") && ("/index.html".equals(uri))) {// "/index.html"跳转到"/" /*if (request.getMethod().equals("GET") && ("/index.html".equals(uri))) {// "/index.html"跳转到"/"
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "no-cache"); response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "0"); response.setHeader("Expires", "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