From 8ad94ef58f7dc61cc97b9e6c084b9efaa8eee4db Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期二, 11 七月 2023 10:57:39 +0800 Subject: [PATCH] 1 --- src/main/java/com/moon/server/service/sys/ProxyService.java | 109 +++++++++++++++++------------------------------------- 1 files changed, 34 insertions(+), 75 deletions(-) diff --git a/src/main/java/com/moon/server/interceptor/ProxyFilter.java b/src/main/java/com/moon/server/service/sys/ProxyService.java similarity index 70% rename from src/main/java/com/moon/server/interceptor/ProxyFilter.java rename to src/main/java/com/moon/server/service/sys/ProxyService.java index 1e729db..9abc355 100644 --- a/src/main/java/com/moon/server/interceptor/ProxyFilter.java +++ b/src/main/java/com/moon/server/service/sys/ProxyService.java @@ -1,4 +1,4 @@ -package com.moon.server.interceptor; +package com.moon.server.service.sys; import com.alibaba.fastjson.JSON; import com.moon.server.entity.all.HttpStatus; @@ -12,27 +12,25 @@ import com.moon.server.helper.HttpHelper; import com.moon.server.helper.StringHelper; import com.moon.server.helper.WebHelper; +import com.moon.server.interceptor.AuthInterceptor; import com.moon.server.service.all.PermsService; import com.moon.server.service.all.SysService; -import com.moon.server.service.sys.ResLogService; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; +import org.springframework.stereotype.Service; import javax.annotation.Resource; -import javax.servlet.*; -import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.TimerTask; /** - * 浠g悊杩囨护鍣� + * 浠g悊鏈嶅姟绫� * @author WWW - * @date 2023-07-04 + * @date 2023-07-11 */ -@WebFilter(urlPatterns = {"/proxy/*"}) -public class ProxyFilter implements Filter { +@Service +public class ProxyService { + @Resource private SysService sysService; @@ -42,60 +40,29 @@ @Resource private ResLogService resLogService; - private final static int LEN = "/proxy/".length(); - - private static final Log log = LogFactory.getLog(ProxyFilter.class); - public static final String ILLEGAL_RESOURCE = JSON.toJSONString(new ResponseMsg<String>(HttpStatus.UNAUTHORIZED, "娌℃湁璧勬簮璁块棶鏉冮檺")); - @Override - public void init(FilterConfig filterConfig) { - } - - @Override - public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) { - try { - HttpServletRequest req = (HttpServletRequest) request; - HttpServletResponse res = (HttpServletResponse) response; - - // 2.鑾峰彇浠ょ墝 - String token = getToken(req); - - // 3.鑾峰彇鐢ㄦ埛 - UserEntity ue = getUser(res, token); - if (null == ue) { - return; - } - - int resId = getResId(req.getRequestURI(), LEN + token.length() + 1); - if (!check(req, res, ue, token)) { - return; - } - - // 9.鑾峰彇璧勬簮瀹炰綋 - ResEntity entity = getResEntity(ue, resId); - if (null == entity) { - WebHelper.writeStr2Page(res, ILLEGAL_RESOURCE); - return; - } - - insertLog(req, ue, resId); - String url = getSourceUrl(req, entity); - proxy(req, res, url); - } catch (Exception ex) { - log.error(ex.getMessage(), ex); - } - } - - @Override - public void destroy() { - } - /** - * 鑾峰彇浠ょ墝 + * URL浠g悊 */ - private String getToken(HttpServletRequest req) { - return req.getRequestURI().substring(LEN, req.getRequestURI().indexOf("/", LEN)); + public void proxyUrl(String token, int resId, HttpServletRequest req, HttpServletResponse res) throws Exception { + // 3.鑾峰彇鐢ㄦ埛 + UserEntity ue = getUser(res, token); + if (null == ue) { + return; + } + + // 9.鑾峰彇璧勬簮瀹炰綋 + ResEntity entity = getResEntity(ue, resId); + if (null == entity) { + WebHelper.writeStr2Page(res, ILLEGAL_RESOURCE); + return; + } + + insertLog(req, ue, resId); + + String url = getSourceUrl(req, entity, token); + forward(req, res, url); } /** @@ -109,16 +76,6 @@ } return ue; - } - - /** - * 鑾峰彇璧勬簮ID - */ - private int getResId(String uri, int start) { - int end = uri.indexOf("/", start); - String str = -1 == end ? uri.substring(start) : uri.substring(start, end); - - return Integer.parseInt(str); } /** @@ -203,7 +160,7 @@ return null; } - // List<ResEntity> list = rs.stream().filter(resEntity -> resEntity.getId() == resId).collect(Collectors.toList()); + // List<ResEntity> list = rs.stream().filter(resEntity -> resEntity.getId() == resId).collect(Collectors.toList()) for (ResEntity entity : rs) { if (resId == entity.getId()) { return entity; @@ -265,15 +222,17 @@ /** * 鑾峰彇鍘熷Url */ - private String getSourceUrl(HttpServletRequest req, ResEntity entity) { + private String getSourceUrl(HttpServletRequest req, ResEntity entity, String token) { + String proxyUrl = entity.getProxy().replace("{token}", token); + int end = req.getRequestURL().indexOf(proxyUrl) + proxyUrl.length(); - return ""; + return entity.getUrl() + req.getRequestURL().substring(end); } /** - * 浠g悊鏈嶅姟 + * 杞彂璇锋眰 */ - private void proxy(HttpServletRequest request, HttpServletResponse response, String url) throws Exception { + private void forward(HttpServletRequest request, HttpServletResponse response, String url) throws Exception { HttpHelper httpHelper = new HttpHelper(); httpHelper.service(request, response, url, null); } -- Gitblit v1.9.3