支持CORS跨域请求
This commit is contained in:
		
							parent
							
								
									133a10ecf2
								
							
						
					
					
						commit
						1e40e60dbf
					
				| 
						 | 
					@ -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");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue