月球大数据地理空间分析展示平台-【后端】-月球后台服务
1
13693261870
2023-07-10 15ee5a10d665522ea53894bc1d5383ab25df21b8
src/main/java/com/moon/server/interceptor/ProxyFilter.java
@@ -6,6 +6,7 @@
import com.moon.server.helper.StringHelper;
import com.moon.server.helper.WebHelper;
import com.moon.server.service.all.SysService;
import com.moon.server.service.sys.ResLogService;
import javax.annotation.Resource;
import javax.servlet.*;
@@ -24,6 +25,11 @@
    @Resource
    private SysService sysService;
    @Resource
    private ResLogService resLogService;
    private final static int LEN = "/proxy/".length();
    @Override
    public void init(FilterConfig filterConfig) {
    }
@@ -32,26 +38,46 @@
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;
        if (!check(req, res)) {
        String token = getToken(req);
        if (!check(req, res, token)) {
            return;
        }
        int i = 0;
        String uri = req.getRequestURI();
        int resId = getResId(uri, LEN + token.length() + 1);
        //
        insertLog(req, res);
    }
    @Override
    public void destroy() {
    }
    private boolean check(HttpServletRequest req, HttpServletResponse res) {
        // 2.获取令牌
        String token = WebHelper.getToken(req);
        if (StringHelper.isNull(token)) {
            return WebHelper.writeStr2Page(res, AuthInterceptor.NO_TOKEN);
        }
    /**
     * 获取令牌
     */
    private String getToken(HttpServletRequest req) {
        return req.getRequestURI().substring(LEN, req.getRequestURI().indexOf("/", LEN));
    }
    /**
     * 获取资源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);
    }
    /**
     * 检查
     */
    private boolean check(HttpServletRequest req, HttpServletResponse res, String token) {
        // 3.获取用户
        UserEntity ue = sysService.tokenService.getCurrentUser(req);
        UserEntity ue = sysService.tokenService.getUserByToken(token);
        if (ue == null) {
            return WebHelper.writeStr2Page(res, AuthInterceptor.NO_LOGIN);
        }
@@ -123,4 +149,18 @@
        return te.getIp().equals(ip);
    }
    private boolean checkPerms(int resId){
        return true;
    }
    /**
     * 插入日志
     */
    private void insertLog(HttpServletRequest req, HttpServletResponse res) {
        String ip = WebHelper.getIpAddress(req);
        //log.info("uriOri={} rAddr={} rHost={} token={}", uriOri, addr, host, token);
    }
}