| | |
| | | if (null == ue) { |
| | | return; |
| | | } |
| | | if (!check(req, res, ue, token)) { |
| | | return; |
| | | } |
| | | |
| | | // 9.获取资源实体 |
| | | ResEntity entity = getResEntity(ue, resId); |
| | |
| | | insertLog(req, ue, resId); |
| | | |
| | | String url = getSourceUrl(req, entity, token); |
| | | forward(req, res, url); |
| | | res.setHeader("token", token); |
| | | forward(req, res, entity, url); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | 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; |
| | | } |
| | |
| | | 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); |
| | | } |
| | | } |