月球大数据地理空间分析展示平台-【后端】-月球后台服务
13693261870
2023-07-20 5fdfa6d4bfdb656255732e0bed2fcefb922ff439
src/main/java/com/moon/server/service/sys/ProxyService.java
@@ -51,10 +51,13 @@
        if (null == ue) {
            return;
        }
        if (!check(req, res, ue, token)) {
            return;
        }
        // 9.获取资源实体
        ResEntity entity = getResEntity(ue, resId);
        if (null == entity) {
        if (null == entity || entity.getType() != 3|| StringHelper.isNull(entity.getProxy())||StringHelper.isNull(entity.getUrl())) {
            WebHelper.writeStr2Page(res, ILLEGAL_RESOURCE);
            return;
        }
@@ -62,7 +65,8 @@
        insertLog(req, ue, resId);
        String url = getSourceUrl(req, entity, token);
        forward(req, res, url);
        res.setHeader("token", token);
        forward(req, res, entity, url);
    }
    /**
@@ -155,7 +159,7 @@
     */
    private ResEntity getResEntity(UserEntity ue, int resId) {
        String uid = StaticData.ADMIN.equals(ue.getUid()) ? null : ue.getUid();
        List<ResEntity> rs = permsService.selectResList(uid);
        List<ResEntity> rs = permsService.selectRes(uid);
        if (null == rs || rs.isEmpty()) {
            return null;
        }
@@ -226,14 +230,19 @@
        String proxyUrl = entity.getProxy().replace("{token}", token);
        int end = req.getRequestURL().indexOf(proxyUrl) + proxyUrl.length();
        return entity.getUrl() + req.getRequestURL().substring(end);
        String url = entity.getUrl() + req.getRequestURL().substring(end);
        if (null != req.getQueryString()) {
            url = url + (entity.getUrl().contains("?") ? "&" : "?") + req.getQueryString();
        }
        return url;
    }
    /**
     * 转发请求
     */
    private void forward(HttpServletRequest request, HttpServletResponse response, String url) throws Exception {
    private void forward(HttpServletRequest request, HttpServletResponse response, ResEntity entity, String url) throws Exception {
        HttpHelper httpHelper = new HttpHelper();
        httpHelper.service(request, response, url, null);
        httpHelper.service(request, response, entity, url);
    }
}