最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringSecurity-2.7中跨域問題解析

 更新時間:2024年01月06日 09:46:53   作者:itl-coder.github.io  
這篇文章主要介紹了SpringSecurity-2.7中跨域問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧

SpringSecurity-2.7中跨域問題

訪問測試

起因

寫這篇的起因是會了解到 SSM(@CrosOrigin)解決跨域,但是會在加入SpringSecurity配置后,這個跨域解決方案就失效了,而/login這個請求上是無法添加這個注解或者通過配置(WebMvcConfig)去解決跨域,所以只能使用SpringSecurity提供的.cros()去解決跨域,但是在學(xué)習(xí)過程中,如果稍微粗心,可能會出現(xiàn)跨域不通的問題,而以下將會說明SpringSecurity是如何配置跨域的

Postman發(fā)起的請求不屬于異步請求(區(qū)分前后端分離的JSON)

使用axios發(fā)起異步請求,

<!-- 
	前端: 使用 Live Server 啟動訪問 http://127.0.0.1:5500/index.html
 	后端: localhost:8080/login 
 -->
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <button id="btn">發(fā)起異步請求</button>
    <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
    <script>
      let btnEl = document.querySelector('#btn');
      btnEl.onclick = function () {
        console.log('click......................');
        axios({
          url: 'http://localhost:8080/login',
          method: 'post',
          data: {
            username: 'zhangsan',
            password: '123456',
          },
        }).then((res) => {
          console.log(res);
        });
      };
    </script>
  </body>
</html>

請求測試

SpringSecurity-配置

config

// 【/login】需要顯示的聲明出來,在前后端分離中,本文沒有采用的是 ajax 向后端發(fā)送異步請求 
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    /**
     * 請求配置
     * authorizeHttpRequests: 開啟權(quán)限請求管理,針對 http 請求進(jìn)行授權(quán)配置
     * mvcMatchers: 匹配請求
     * - permitAll: 代表放行該資源,該資源位公共資源,無需認(rèn)證和授權(quán)可以直接訪問
     * - anyRequest().authenticated(): 代表所有請求,必須認(rèn)證之后才能訪問
     * - formLogin: 代表開啟表單認(rèn)證
     * <strong>放行資源必須放在認(rèn)證資源之前</strong>
     */
    http.authorizeHttpRequests((authorizeHttpRequests) ->
            authorizeHttpRequests
                    // 預(yù)檢請求是怎么知道的:官網(wǎng)中有這樣一段描述,如圖
                    .antMatchers(HttpMethod.OPTIONS, "/login").permitAll()
                    .anyRequest().authenticated()
    );
 /**
  * 跨域配置
  */
 http.cors().configurationSource(corsConfigurationSource());
// WHITELIST 自定義的放行資源數(shù)組, /login不能出現(xiàn)在里面
@Bean
public WebSecurityCustomizer webSecurityCustomizer() {
    return (web) -> web.ignoring().antMatchers(WHITELIST);
}
}
// 此處關(guān)于下方的描述可以不更改,依然使用此配置
@Bean
CorsConfigurationSource corsConfigurationSource() {
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); // 新建一個跨域配置源
    // 你只要點擊 .cors().configurationSource( <- 點擊進(jìn)入這個方法,查看出這個參數(shù),就明白為什么給了 CorsConfiguration,)
    CorsConfiguration configuration = new CorsConfiguration(); // 新建一個跨域配置
    configuration.setAllowCredentials(true); // 【這個憑證問題,后續(xù)會給出詳細(xì)解釋,在 axios 的配置中默認(rèn)是false,【axios 中 `withCredentials` 表示跨域請求時是否需要使用憑證】瀏覽器是否應(yīng)當(dāng)發(fā)送憑證信息,如cookie。
    configuration.setAllowedMethods(Arrays.asList("*")); // 允許的請求方法,*表示允許所有方法
    configuration.setAllowedHeaders(Arrays.asList("*")); // 允許的請求頭,*表示允許所有頭
    configuration.setMaxAge(Duration.ofHours(1)); // 預(yù)檢請求的有效期,有效期內(nèi)不必再次發(fā)送,默認(rèn)是1800秒。
    configuration.setAllowedOriginPatterns(Arrays.asList("*"));// 允許的請求源
    source.registerCorsConfiguration("/**", configuration); // 注冊跨域配置
    return source;
}

以上配置其實可以算正確,但是有合規(guī)

在調(diào)試后發(fā)現(xiàn),只需要將/login加入(.antMatchers("/login").permitAll()),在所看到的視頻中的關(guān)于SpringSecurity的跨域就生效了,也可以不將預(yù)檢配置出來

到此這篇關(guān)于SpringSecurity-2.7中跨域問題的文章就介紹到這了,更多相關(guān)SpringSecurity跨域內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java開發(fā)崗位面試被問到反射怎么辦

    Java開發(fā)崗位面試被問到反射怎么辦

    這篇文章主要介紹了java 面向?qū)ο竺嬖嚰\的相關(guān)資料,這里整理了面向?qū)ο蟮幕A(chǔ)知識,幫助大家學(xué)習(xí)理解此部分的知識,需要的朋友可以參考下
    2021-07-07
  • Java合并兩個及以上有序鏈表的示例詳解

    Java合并兩個及以上有序鏈表的示例詳解

    這篇文章主要通過兩個例題為大家介紹一下Java合并兩個及以上有序鏈表的實現(xiàn)方法,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,需要的可以參考一下
    2022-11-11
  • springboot不掃描@repository的問題及解決

    springboot不掃描@repository的問題及解決

    這篇文章主要介紹了springboot不掃描@repository的問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 關(guān)于fastjson的@JSONField注解的一些問題(詳解)

    關(guān)于fastjson的@JSONField注解的一些問題(詳解)

    下面小編就為大家?guī)硪黄P(guān)于fastjson的@JSONField注解的一些問題(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • 在Java項目中實現(xiàn)CI/CD持續(xù)集成與持續(xù)部署

    在Java項目中實現(xiàn)CI/CD持續(xù)集成與持續(xù)部署

    這篇文章主要為大家介紹了在Java項目中實現(xiàn)CI/CD持續(xù)集成與持續(xù)部署詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • jdk安裝及配置全過程(linux、windows)

    jdk安裝及配置全過程(linux、windows)

    文章主要介紹了JDK和JRE的區(qū)別,以及如何在Windows和Linux下安裝和配置JDK,還包括了如何測試安裝是否成功和卸載JDK的方法
    2026-04-04
  • JAVA 獲取系統(tǒng)當(dāng)前時間實例代碼

    JAVA 獲取系統(tǒng)當(dāng)前時間實例代碼

    這篇文章主要介紹了JAVA 獲取系統(tǒng)當(dāng)前時間實例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • Java中Minio的基本使用詳解

    Java中Minio的基本使用詳解

    這篇文章主要介紹了Java中Minio的基本使用詳解,MinIO 是一個基于Apache License v2.0開源協(xié)議的對象存儲服務(wù),它兼容亞馬遜S3云存儲服務(wù)接口,非常適合于存儲大容量非結(jié)構(gòu)化的數(shù)據(jù),例如圖片、視頻、日志文件、備份數(shù)據(jù)和容器/虛擬機鏡像等,需要的朋友可以參考下
    2024-01-01
  • Java中Long類型傳入前端數(shù)值出錯問題

    Java中Long類型傳入前端數(shù)值出錯問題

    這篇文章主要介紹了Java中Long類型傳入前端數(shù)值出錯問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • springboot如何讀取自定義配置項

    springboot如何讀取自定義配置項

    這篇文章主要介紹了springboot如何讀取自定義配置項的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-05-05

最新評論

浮山县| 舟山市| 阿尔山市| 济南市| 佳木斯市| 当阳市| 建瓯市| 万安县| 清水县| 镇康县| 平果县| 若羌县| 静安区| 喀喇| 黎川县| 明光市| 布拖县| 长丰县| 巴彦淖尔市| 治多县| 郁南县| 台东县| 唐海县| 石柱| 凉城县| 康定县| 彰化县| 含山县| 北海市| 鄂托克前旗| 临汾市| 银川市| 稻城县| 湖州市| 抚松县| 弥勒县| 来安县| 阿克陶县| 吉水县| 庄浪县| 丰宁|