亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

SpringBoot+Spring Security無(wú)法實(shí)現(xiàn)跨域的解決方案

瀏覽:71日期:2023-02-24 14:51:17
SpringBoot+Spring Security無(wú)法實(shí)現(xiàn)跨域未使用Security時(shí)跨域:

import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.autoconfigure.AutoConfigureBefore;import org.springframework.context.annotation.Configuration;import org.springframework.format.FormatterRegistry;import org.springframework.web.servlet.config.annotation.*;@Configuration@AutoConfigureBefore(SecurityConfig.class)public class MyMvcConfigurer implements WebMvcConfigurer { public void addCorsMappings(CorsRegistry registry){LOGGER.info('跨域已設(shè)置');registry.addMapping('/**').allowedOrigins('*').allowedMethods('*').allowedHeaders('*').allowCredentials(true).maxAge(3600); }}

整合Security時(shí)發(fā)現(xiàn)只用上述方法前后端分離時(shí)仍存在跨域問(wèn)題,

解決方法如下:

@Configuration@AutoConfigureBefore(Swagger2Configuration.class)@EnableWebSecurity@EnableGlobalMethodSecurity(prePostEnabled = true)@Order(-1)public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception {http.formLogin().loginProcessingUrl('/user/login').loginPage('/singIn.html').successHandler(moyuAuthenticationSuccessHandler).failureHandler(moyuAuthenticationFailureHandler).and().apply(moyuSocialSecurityConfig).and().rememberMe().tokenRepository(persistentTokenRepository()).tokenValiditySeconds(3600*24*7).userDetailsService(userDetailsService).and().authorizeRequests().antMatchers('/user/login','/login','/singIn.html','**','/**').permitAll().anyRequest().authenticated().and().cors().and().csrf().disable(); }}重點(diǎn)加入代碼:

.and() .cors()//新加入 .and() .csrf().disable();引用Spring Security 項(xiàng)目的跨域處理

最近項(xiàng)目采用了前后端分離的框架,前端和后臺(tái)接口沒(méi)有部署到一個(gè)站點(diǎn),出現(xiàn)了跨域問(wèn)題,什么是跨域,這里就不再贅述,直接說(shuō)解決辦法。

Spring 解決跨域的方式有很多,個(gè)人采用了Crosfilter的方式

具體代碼如下:

@Bean public CorsFilter corsFilter() {final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();final CorsConfiguration corsConfiguration = new CorsConfiguration();corsConfiguration.setAllowCredentials(true);corsConfiguration.addAllowedOrigin('*');corsConfiguration.addAllowedHeader('*');corsConfiguration.addAllowedMethod('*');urlBasedCorsConfigurationSource.registerCorsConfiguration('/**', corsConfiguration);return new CorsFilter(urlBasedCorsConfigurationSource); }

配置完成后,測(cè)試調(diào)用,報(bào)錯(cuò)401,依然不行。網(wǎng)上查資料得知,跨域請(qǐng)求會(huì)進(jìn)行兩次。具體流程見(jiàn)下圖:

SpringBoot+Spring Security無(wú)法實(shí)現(xiàn)跨域的解決方案

每次跨域請(qǐng)求,真正請(qǐng)求到達(dá)后端之前,瀏覽器都會(huì)先發(fā)起一個(gè)preflight request,請(qǐng)求方式為OPTIONS 詢(xún)問(wèn)服務(wù)端是否接受該跨域請(qǐng)求,具體參數(shù)如下圖:

SpringBoot+Spring Security無(wú)法實(shí)現(xiàn)跨域的解決方案

但是該請(qǐng)求不能攜帶cookie和自己定義的header。

由于項(xiàng)目中引入了Spring security ,而我使用的token傳遞方式是在header中使用authorization 字段,這樣依賴(lài)Spring Security攔截到 preflight request 發(fā)現(xiàn)它沒(méi)有攜帶token,就會(huì)報(bào)錯(cuò)401,沒(méi)有授權(quán)。

解決這個(gè)問(wèn)題很簡(jiǎn)單,可以使用以下配置

讓Spring security 不校驗(yàn)preflight request 。

@Override public void configure(HttpSecurity http) throws Exception {ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry registry = http.authorizeRequests();registry.requestMatchers(CorsUtils::isPreFlightRequest).permitAll();//讓Spring security放行所有preflight request }

再試就搞定了,但是后端直接配置支持跨域會(huì)導(dǎo)致兩次請(qǐng)求。還使用另一種方式,使用Nginx 轉(zhuǎn)發(fā)一下請(qǐng)求也可以。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 伊人久久视频 | 国产dvd毛片在线视频 | 国语一级毛片私人影院 | 亚洲在线观看 | 国产91香蕉在线精品 | 国产成人久久一区二区三区 | 久久综合久久综合久久 | 亚洲国产清纯 | 亚洲性69影院在线观看 | 国产精品亚洲片在线va | 涩色网站 | 免费淫片 | 久久成人亚洲 | 久久精品免费全国观看国产 | 特黄aaaaaaaaa及毛片 | 一级鲁丝片 | caoporen个人免费公开视频 | 五月亭亭六月丁香 | 57pao国产成永久免费视频 | 亚洲最大色视频 | 欧美精品99毛片免费高清观看 | 免费看色片网站 | 色y视频 | 激情综合网五月激情 | 成人在线不卡视频 | 久久99国产亚洲精品 | 国产一级做a爰片... | 国产精品人人爱一区二区白浆 | 欧洲色吧 | 精品在线不卡 | 中文字幕第一页在线 | 92香蕉视频| 成年美女毛片黄网站色奶头大全 | 日本在线看片网站 | 大杳蕉伊人狼人久久一本线 | xoxoxoxo欧美性护士 | 亚洲国产成人久久综合碰碰动漫3d | 97精品国产福利一区二区三区 | 中国特级黄色毛片 | 97国内精品久久久久久久影视 | 久操中文在线 |