支持CORS跨域请求
This commit is contained in:
		| @@ -1,7 +1,11 @@ | |||||||
| package com.ruoyi.framework.config; | package com.ruoyi.framework.config; | ||||||
|  |  | ||||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||||
|  | import org.springframework.context.annotation.Bean; | ||||||
| import org.springframework.context.annotation.Configuration; | import org.springframework.context.annotation.Configuration; | ||||||
|  | import org.springframework.web.cors.CorsConfiguration; | ||||||
|  | import org.springframework.web.cors.UrlBasedCorsConfigurationSource; | ||||||
|  | import org.springframework.web.filter.CorsFilter; | ||||||
| import org.springframework.web.servlet.config.annotation.InterceptorRegistry; | import org.springframework.web.servlet.config.annotation.InterceptorRegistry; | ||||||
| import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; | import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; | ||||||
| import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; | ||||||
| @@ -39,4 +43,24 @@ public class ResourcesConfig implements WebMvcConfigurer | |||||||
|     { |     { | ||||||
|         registry.addInterceptor(repeatSubmitInterceptor).addPathPatterns("/**"); |         registry.addInterceptor(repeatSubmitInterceptor).addPathPatterns("/**"); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 跨域配置 | ||||||
|  |      */ | ||||||
|  |     @Bean | ||||||
|  |     public CorsFilter corsFilter() | ||||||
|  |     { | ||||||
|  |         UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); | ||||||
|  |         CorsConfiguration config = new CorsConfiguration(); | ||||||
|  |         config.setAllowCredentials(true); | ||||||
|  |         // 设置访问源地址 | ||||||
|  |         config.addAllowedOrigin("*"); | ||||||
|  |         // 设置访问源请求头 | ||||||
|  |         config.addAllowedHeader("*"); | ||||||
|  |         // 设置访问源请求方法 | ||||||
|  |         config.addAllowedMethod("*"); | ||||||
|  |         // 对接口配置跨域设置 | ||||||
|  |         source.registerCorsConfiguration("/**", config); | ||||||
|  |         return new CorsFilter(source); | ||||||
|  |     } | ||||||
| } | } | ||||||
| @@ -12,6 +12,8 @@ import org.springframework.security.config.http.SessionCreationPolicy; | |||||||
| import org.springframework.security.core.userdetails.UserDetailsService; | import org.springframework.security.core.userdetails.UserDetailsService; | ||||||
| import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; | import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; | ||||||
| import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; | import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; | ||||||
|  | import org.springframework.security.web.authentication.logout.LogoutFilter; | ||||||
|  | import org.springframework.web.filter.CorsFilter; | ||||||
| import com.ruoyi.framework.security.filter.JwtAuthenticationTokenFilter; | import com.ruoyi.framework.security.filter.JwtAuthenticationTokenFilter; | ||||||
| import com.ruoyi.framework.security.handle.AuthenticationEntryPointImpl; | import com.ruoyi.framework.security.handle.AuthenticationEntryPointImpl; | ||||||
| import com.ruoyi.framework.security.handle.LogoutSuccessHandlerImpl; | import com.ruoyi.framework.security.handle.LogoutSuccessHandlerImpl; | ||||||
| @@ -48,6 +50,12 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter | |||||||
|     @Autowired |     @Autowired | ||||||
|     private JwtAuthenticationTokenFilter authenticationTokenFilter; |     private JwtAuthenticationTokenFilter authenticationTokenFilter; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 跨域过滤器 | ||||||
|  |      */ | ||||||
|  |     @Autowired | ||||||
|  |     private CorsFilter corsFilter; | ||||||
|  |      | ||||||
|     /** |     /** | ||||||
|      * 解决 无法直接注入 AuthenticationManager |      * 解决 无法直接注入 AuthenticationManager | ||||||
|      * |      * | ||||||
| @@ -112,6 +120,9 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter | |||||||
|         httpSecurity.logout().logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler); |         httpSecurity.logout().logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler); | ||||||
|         // 添加JWT filter |         // 添加JWT filter | ||||||
|         httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class); |         httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class); | ||||||
|  |         // 添加CORS filter | ||||||
|  |         httpSecurity.addFilterBefore(corsFilter, JwtAuthenticationTokenFilter.class); | ||||||
|  |         httpSecurity.addFilterBefore(corsFilter, LogoutFilter.class); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|      |      | ||||||
|   | |||||||
| @@ -178,6 +178,8 @@ public class GenController extends BaseController | |||||||
|     private void genCode(HttpServletResponse response, byte[] data) throws IOException |     private void genCode(HttpServletResponse response, byte[] data) throws IOException | ||||||
|     { |     { | ||||||
|         response.reset(); |         response.reset(); | ||||||
|  |         response.addHeader("Access-Control-Allow-Origin", "*"); | ||||||
|  |         response.addHeader("Access-Control-Expose-Headers", "Content-Disposition"); | ||||||
|         response.setHeader("Content-Disposition", "attachment; filename=\"ruoyi.zip\""); |         response.setHeader("Content-Disposition", "attachment; filename=\"ruoyi.zip\""); | ||||||
|         response.addHeader("Content-Length", "" + data.length); |         response.addHeader("Content-Length", "" + data.length); | ||||||
|         response.setContentType("application/octet-stream; charset=UTF-8"); |         response.setContentType("application/octet-stream; charset=UTF-8"); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user