From 15b6012b571449defd0f3c8a8c8fba0ecedfa734 Mon Sep 17 00:00:00 2001 From: liyanqi <15181887205@163.com> Date: 星期六, 10 九月 2022 14:52:39 +0800 Subject: [PATCH] 修改了因springsecurity导致的跨域问题 --- ycl-common/src/main/java/com/ycl/config/WebConfig.java | 45 +++++++++++ ycl-common/src/main/java/com/ycl/service/depart/impl/SccgDepartServiceImpl.java | 4 + ycl-common/src/main/java/com/ycl/config/WebSecurityCorsFilter.java | 16 --- ycl-platform/src/main/java/com/ycl/config/SecurityConfig.java | 3 ycl-platform/src/main/resources/logback.xml | 147 ++++++++++++++++++++++++++++++++++++ 5 files changed, 200 insertions(+), 15 deletions(-) diff --git a/ycl-common/src/main/java/com/ycl/config/WebConfig.java b/ycl-common/src/main/java/com/ycl/config/WebConfig.java new file mode 100644 index 0000000..1bd6b81 --- /dev/null +++ b/ycl-common/src/main/java/com/ycl/config/WebConfig.java @@ -0,0 +1,45 @@ +package com.ycl.config; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +import org.springframework.web.filter.CorsFilter; +/** + * @author Lyq + * @version 1.0 + * @date 2022/9/10 11:09 + */ +@Configuration +@Order(Ordered.HIGHEST_PRECEDENCE) +public class WebConfig { + + + @Bean + public CorsFilter corsFilter() { + final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); + final CorsConfiguration config = new CorsConfiguration(); + // 鍏佽cookies璺ㄥ煙 + config.setAllowCredentials(true); + // #鍏佽鍚戣鏈嶅姟鍣ㄦ彁浜よ姹傜殑URI锛�*琛ㄧず鍏ㄩ儴鍏佽锛屽湪SpringMVC涓紝濡傛灉璁炬垚*锛屼細鑷姩杞垚褰撳墠璇锋眰澶翠腑鐨凮rigin + config.addAllowedOrigin("*"); + // #鍏佽璁块棶鐨勫ご淇℃伅,*琛ㄧず鍏ㄩ儴 + config.addAllowedHeader("*"); + // 棰勬璇锋眰鐨勭紦瀛樻椂闂达紙绉掞級锛屽嵆鍦ㄨ繖涓椂闂存閲岋紝瀵逛簬鐩稿悓鐨勮法鍩熻姹備笉浼氬啀棰勬浜� + config.setMaxAge(18000L); + // 鍏佽鎻愪氦璇锋眰鐨勬柟娉曪紝*琛ㄧず鍏ㄩ儴鍏佽 + config.addAllowedMethod("OPTIONS"); + config.addAllowedMethod("HEAD"); + // 鍏佽Get鐨勮姹傛柟娉� + config.addAllowedMethod("GET"); + config.addAllowedMethod("PUT"); + config.addAllowedMethod("POST"); + config.addAllowedMethod("DELETE"); + config.addAllowedMethod("PATCH"); + source.registerCorsConfiguration("/**", config); + return new CorsFilter(source); + } +} diff --git a/ycl-common/src/main/java/com/ycl/config/WebSecurityCorsFilter.java b/ycl-common/src/main/java/com/ycl/config/WebSecurityCorsFilter.java index 00189ec..77eb666 100644 --- a/ycl-common/src/main/java/com/ycl/config/WebSecurityCorsFilter.java +++ b/ycl-common/src/main/java/com/ycl/config/WebSecurityCorsFilter.java @@ -1,41 +1,29 @@ package com.ycl.config; -import org.springframework.context.annotation.Configuration; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.CorsConfigurationSource; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import javax.servlet.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.util.Arrays; -import java.util.Collections; /** * @author Lyq * @version 1.0 - * @date 2022/9/10 1:04 + * @date 2022/9/11 10:04 */ public class WebSecurityCorsFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { - } - @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletResponse res = (HttpServletResponse) response; res.setHeader("Access-Control-Allow-Origin", "*"); res.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT"); res.setHeader("Access-Control-Max-Age", "3600"); - res.setHeader("Access-Control-Allow-Headers", "Authorization, Content-Type, Accept, x-requested-with, Cache-Control, os, version, source"); + res.setHeader("Access-Control-Allow-Headers", "Authorization, Content-Type, Accept, x-requested-with, Cache-Control"); chain.doFilter(request, res); } - @Override public void destroy() { - } } diff --git a/ycl-common/src/main/java/com/ycl/service/depart/impl/SccgDepartServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/depart/impl/SccgDepartServiceImpl.java index 8b4e019..9c139c4 100644 --- a/ycl-common/src/main/java/com/ycl/service/depart/impl/SccgDepartServiceImpl.java +++ b/ycl-common/src/main/java/com/ycl/service/depart/impl/SccgDepartServiceImpl.java @@ -80,6 +80,10 @@ List<Long> userIds = updateDepartVO.getUserIds(); if (CollUtil.isNotEmpty(userIds)) { Long departId = updateDepartVO.getId(); + List<UmsAdminDepart> departList = umsAdminDepartService.queryByDepartId(departId); + if (CollUtil.isNotEmpty(departList)) { + umsAdminDepartService.deletedByDepartId(departId); + } userIds.forEach(e -> { UmsAdminDepart adminDepart = new UmsAdminDepart(); adminDepart.setDepartId(departId); diff --git a/ycl-platform/src/main/java/com/ycl/config/SecurityConfig.java b/ycl-platform/src/main/java/com/ycl/config/SecurityConfig.java index cc1eab8..804a7a1 100644 --- a/ycl-platform/src/main/java/com/ycl/config/SecurityConfig.java +++ b/ycl-platform/src/main/java/com/ycl/config/SecurityConfig.java @@ -9,6 +9,7 @@ import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer; import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.web.SecurityFilterChain; +import org.springframework.security.web.access.channel.ChannelProcessingFilter; import org.springframework.security.web.access.intercept.FilterSecurityInterceptor; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; @@ -63,7 +64,7 @@ .authenticationEntryPoint(restAuthenticationEntryPoint) // 鑷畾涔夋潈闄愭嫤鎴櫒JWT杩囨护鍣� .and() - .addFilterBefore(webSecurityCorsFilter(), UsernamePasswordAuthenticationFilter.class) + .addFilterBefore(webSecurityCorsFilter(), ChannelProcessingFilter.class) .addFilterBefore(jwtAuthenticationTokenFilter, UsernamePasswordAuthenticationFilter.class); //鏈夊姩鎬佹潈闄愰厤缃椂娣诲姞鍔ㄦ�佹潈闄愭牎楠岃繃婊ゅ櫒 if (dynamicSecurityService != null) { diff --git a/ycl-platform/src/main/resources/logback.xml b/ycl-platform/src/main/resources/logback.xml new file mode 100644 index 0000000..711cef3 --- /dev/null +++ b/ycl-platform/src/main/resources/logback.xml @@ -0,0 +1,147 @@ +<?xml version="1.0" encoding="UTF-8"?> +<configuration> + <property name="LOG_HOME" value="${user.dir}/logs/ycl/platform" /> + + <appender name="Console" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern>%d{H:mm} %-5level [%logger{16}] %msg%n</pattern> + </encoder> + </appender> + <!-- class="ch.qos.logback.core.rolling.RollingFileAppender">--> + <appender name="normalLog" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> + <FileNamePattern>${LOG_HOME}/normal/%d{yyyy-MM-dd}/%i.log</FileNamePattern> + <MaxHistory>30</MaxHistory> + <maxFileSize>2MB</maxFileSize> + </rollingPolicy> + <!--<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> + <FileNamePattern>${LOG_HOME}/job.normal.%d{yyyy-MM-dd}.log + </FileNamePattern> + <MaxHistory>30</MaxHistory> + </rollingPolicy> + <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> + <maxFileSize>10MB</maxFileSize> + </triggeringPolicy>--> + <layout class="ch.qos.logback.classic.PatternLayout"> + <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{16} - %msg%n + </pattern> + </layout> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>ERROR</level> + <onMatch>DENY</onMatch> + <onMismatch>ACCEPT</onMismatch> + </filter> + </appender> + + <appender name="ASYNC-INFO" class="ch.qos.logback.classic.AsyncAppender"> + <discardingThreshold>0</discardingThreshold> + <queueSize>256</queueSize> + <appender-ref ref="normalLog"/> + </appender> + + + + <appender name="errorLog" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + + <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> + <FileNamePattern>${LOG_HOME}/error/%d{yyyy-MM-dd}/%i.log</FileNamePattern> + <MaxHistory>30</MaxHistory> + <maxFileSize>2MB</maxFileSize> + </rollingPolicy> + <!--<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> + <FileNamePattern>${LOG_HOME}/job.error.%d{yyyy-MM-dd}.log + </FileNamePattern> + <MaxHistory>30</MaxHistory> + </rollingPolicy> + <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> + <maxFileSize>10MB</maxFileSize> + </triggeringPolicy>--> + <layout class="ch.qos.logback.classic.PatternLayout"> + <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{16} - %msg%n + </pattern> + </layout> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>ERROR</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + </appender> + + + + <appender name="ASYNC-ERROR" class="ch.qos.logback.classic.AsyncAppender"> + <discardingThreshold>0</discardingThreshold> + <queueSize>256</queueSize> + <appender-ref ref="errorLog"/> + </appender> + + <appender name="ASYNC-CONSOLE" class="ch.qos.logback.classic.AsyncAppender"> + <discardingThreshold>0</discardingThreshold> + <queueSize>256</queueSize> + <appender-ref ref="Console"/> + </appender> + + + +<!-- <logger name="com.ycl" level="debug" > + + </logger >--> + <springProfile name="dev"> + <!--鎵撳嵃SQL--> + <logger name="java.sql.Connection" level="DEBUG" /> + <logger name="java.sql.Statement" level="DEBUG" /> + <logger name="java.sql.PreparedStatement" level="DEBUG" /> + + <logger name="com.ycl.component" level="error" /> + + <logger name="com.ycl" level="debug" > + <appender-ref ref="normalLog" /> + <appender-ref ref="errorLog" /> + </logger> + + <root level="info"> + <appender-ref ref="Console" /> + <appender-ref ref="normalLog" /> + <appender-ref ref="errorLog" /> + </root> + </springProfile> + <springProfile name="test"> + <!--鎵撳嵃SQL--> + <logger name="java.sql.Connection" level="DEBUG" /> + <logger name="java.sql.Statement" level="DEBUG" /> + <logger name="java.sql.PreparedStatement" level="DEBUG" /> + + <logger name="com.ycl.component" level="error" /> + + <logger name="com.ycl" level="debug" > + <appender-ref ref="normalLog" /> + <appender-ref ref="errorLog" /> + </logger> + + <root level="info"> + <appender-ref ref="Console" /> + <appender-ref ref="normalLog" /> + <appender-ref ref="errorLog" /> + </root> + </springProfile> + + <springProfile name="pro"> + <!--鎵撳嵃SQL--> + <logger name="java.sql.Connection" level="ERROR" /> + <logger name="java.sql.Statement" level="ERROR" /> + <logger name="java.sql.PreparedStatement" level="ERROR" /> + <logger name="com.ycl" level="debug" > + <appender-ref ref="normalLog" /> + <appender-ref ref="errorLog" /> + </logger> + <root level="info"> + <appender-ref ref="Console" /> + </root> + </springProfile> + + + + +</configuration> \ No newline at end of file -- Gitblit v1.8.0