cloudroam
2025-03-19 c3fbe657671ae55768ce9ac7ea7bb75ff0c6829e
src/main/java/com/jsh/erp/filter/LogCostFilter.java
@@ -17,7 +17,10 @@
                              "/jshERP-boot/user/registerUser#/jshERP-boot/user/randomImage#" +
                              "/jshERP-boot/platformConfig/getPlatform#/jshERP-boot/v2/api-docs#/jshERP-boot/webjars#" +
                              "/jshERP-boot/systemConfig/static#/jshERP-boot/api/plugin/wechat/weChat/share#" +
                              "/jshERP-boot/api/plugin/general-ledger/pdf/voucher#/jshERP-boot/api/plugin/tenant-statistics/tenantClean")})
                              "/jshERP-boot/api/plugin/general-ledger/pdf/voucher#/jshERP-boot/api/plugin/tenant-statistics/tenantClean#" +
                              "/jshERP-boot/swagger-ui.html#/jshERP-boot/swagger-resources#" +
                              "/jshERP-boot/doc.html#/jshERP-boot/swagger-resources/**#" +
                              "/jshERP-boot/v2/api-docs/**#/jshERP-boot/webjars/**")})
public class LogCostFilter implements Filter {
    private static final String FILTER_PATH = "filterPath";
@@ -40,14 +43,26 @@
        HttpServletRequest servletRequest = (HttpServletRequest) request;
        HttpServletResponse servletResponse = (HttpServletResponse) response;
        String requestUrl = servletRequest.getRequestURI();
        //具体,比如:处理若用户未登录,则跳转到登录页
        Object userId = redisService.getObjectFromSessionByKey(servletRequest,"userId");
        if(userId!=null) { //如果已登录,不阻止
        if (isSwaggerRequest(requestUrl)) {
            chain.doFilter(request, response);
            return;
        }
        if (requestUrl != null && (requestUrl.contains("/doc.html") ||
            requestUrl.contains("/user/login") || requestUrl.contains("/user/register"))) {
        if (requestUrl != null && (
            requestUrl.contains("/doc.html") ||
            requestUrl.contains("/swagger-ui.html") ||
            requestUrl.contains("/swagger-resources") ||
            requestUrl.contains("/v2/api-docs") ||
            requestUrl.contains("/webjars/") ||
            requestUrl.contains("/user/login") ||
            requestUrl.contains("/user/register"))) {
            chain.doFilter(request, response);
            return;
        }
        Object userId = redisService.getObjectFromSessionByKey(servletRequest,"userId");
        if(userId!=null) { //如果已登录,不阻止
            chain.doFilter(request, response);
            return;
        }
@@ -64,6 +79,23 @@
            servletResponse.getWriter().write("loginOut");
        }
    }
    private boolean isSwaggerRequest(String requestUrl) {
        return requestUrl != null && (
                requestUrl.contains("/doc.html") ||
                        requestUrl.contains("/swagger-ui.html") ||
                        requestUrl.contains("/swagger-resources") ||
                        requestUrl.contains("/v2/api-docs") ||
                        requestUrl.contains("/webjars/") ||
                        requestUrl.contains("/user/login") ||
                        requestUrl.contains("/user/register") ||
                        // 添加API尝试请求
                        requestUrl.contains("/cloudContent/getByType") ||  // 允许未登录访问的API
                        requestUrl.contains("/cloudContent/list")  ||         // 允许未登录访问的API
                        requestUrl.contains("/sysDict/getByDictCodeAndItemText")  || //允许查询字典值API
                        requestUrl.contains("/sms/send-code")  || //
                        requestUrl.contains("/sms/login")  //
        );
    }
    @Override
    public void destroy() {