From f7b2d885bc64a0598facb2b5a0d89dcdf5921902 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期三, 27 九月 2023 16:26:11 +0800 Subject: [PATCH] 修改代理服务-3 --- src/main/java/com/moon/server/service/sys/ProxyService.java | 33 ++++++++++++++++++++++++++++++--- 1 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/moon/server/service/sys/ProxyService.java b/src/main/java/com/moon/server/service/sys/ProxyService.java index 4b14343..b6c8770 100644 --- a/src/main/java/com/moon/server/service/sys/ProxyService.java +++ b/src/main/java/com/moon/server/service/sys/ProxyService.java @@ -245,15 +245,42 @@ return url; } - String str = req.getQueryString(); - if (!StaticData.GET_CAPABILITIES.equals(req.getParameter(StaticData.REQUEST))) { - // + String str = req.getQueryString(), layers = req.getParameter("layers"); + if (!StaticData.GET_CAPABILITIES.equals(req.getParameter(StaticData.REQUEST)) && null != layers) { + int start = str.indexOf("layers"); + int end = str.indexOf("&", start); + layers = filterGeoLayers(ue, layers); + + str = str.replace(str.substring(start, end > -1 ? end : str.length()), "layers=" + layers); + } else { + entity.setBak(StaticData.GET_CAPABILITIES); } return url + (url.contains("?") ? "&" : "?") + str; } /** + * 杩囨护GeoServer鍥惧眰 + */ + private String filterGeoLayers(UserEntity ue, String layers) { + List<String> tabs = StaticData.ADMIN.equals(ue.getUid()) ? permsService.selectAllTabs() : permsService.selectTabs(ue.getUid()); + if (null == tabs || tabs.isEmpty()) { + return ""; + } + + StringBuilder sb = new StringBuilder(); + String[] strs = layers.split(StaticData.COMMA); + for (String str : strs) { + if (tabs.contains(str)) { + sb.append(str).append(","); + } + } + sb.deleteCharAt(sb.length() - 1); + + return sb.toString(); + } + + /** * 杞彂璇锋眰 */ private void forward(HttpServletRequest request, HttpServletResponse response, ResEntity entity, String url) throws Exception { -- Gitblit v1.9.3