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

SpringSecurity定義多個過濾器鏈的操作代碼

 更新時間:2023年04月21日 10:37:20   作者:吳名氏  
Spring?Security?是?Spring家族中的一個安全管理框架。相比與另外一個安全框架Shiro,它提供了更豐富的功能,社區(qū)資源也比Shiro豐富,今天通過本文給大家介紹SpringSecurity定義多個過濾器鏈的實例,感興趣的朋友跟隨小編一起看看吧

簡介

  • Spring Security 是 Spring家族中的一個安全管理框架。相比與另外一個安全框架Shiro,它提供了更豐富的功能,社區(qū)資源也比Shiro豐富。
  • 一般來說中大型的項目都是使用SpringSecurity來做安全框架。小項目有Shiro的比較多,因為相比與SpringSecurity,Shiro的上手更加的簡單。

? 一般Web應(yīng)用的需要進(jìn)行認(rèn)證和授權(quán)。

  • 認(rèn)證:驗證當(dāng)前訪問系統(tǒng)的是不是本系統(tǒng)的用戶,并且要確認(rèn)具體是哪個用戶
  • ? 授權(quán):經(jīng)過認(rèn)證后判斷當(dāng)前用戶是否有權(quán)限進(jìn)行某個操作

? 而認(rèn)證和授權(quán)也是SpringSecurity作為安全框架的核心功能。

在Spring Security中可以定義多個過濾器鏈,一個WebSerityConfigurerAdapter的實例就可以配置一個過濾器鏈,我們只需要配置多個WebSerityConfigurerAdapter的實例即可

在這里插入圖片描述

可以看到,當(dāng)請求到達(dá) FilterChainProxy 之后,F(xiàn)ilterChainProxy 會根據(jù)請求的路徑,將請求轉(zhuǎn)發(fā)到不同的 過濾器鏈 上面去,不同的 過濾器鏈 對應(yīng)了不同的過濾器,也就是不同的請求將經(jīng)過不同的過濾器。

@Configuration
public class SecurityConfig {
    @Bean
    protected UserDetailsService userDetailsService() {
        InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
        manager.createUser(User.withUsername("javaboy").password("{bcrypt}$2a$10$Sb1gAUH4wwazfNiqflKZve4Ubh.spJcxgHG8Cp29DeGya5zsHENqi").roles("admin", "aaa", "bbb").build());
        manager.createUser(User.withUsername("sang").password("{noop}123").roles("admin").build());
        manager.createUser(User.withUsername("吳名氏").password("{MD5}{Wucj/L8wMTMzFi3oBKWsETNeXbMFaHZW9vCK9mahMHc=}4d43db282b36d7f0421498fdc693f2a2").roles("user", "aaa", "bbb").build());
        return manager;
    }

    @Configuration
    @Order(1)
    static class DefaultWebSecurityConfig extends WebSecurityConfigurerAdapter {

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.antMatcher("/foo/**")
                    .authorizeRequests()
                    .anyRequest().hasRole("admin")
                    .and()
                    .csrf().disable();
        }
    }

    @Configuration
    @Order(2)
    static class DefaultWebSecurityConfig2 extends WebSecurityConfigurerAdapter {

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.antMatcher("/bar/**")
                    .authorizeRequests()
                    .anyRequest().hasRole("user")
                    .and()
                    .formLogin()
                    .permitAll()
                    .and()
                    .csrf().disable();
        }
    }
}

說明:

  • 首先,SecurityConfig 不再需要繼承自 WebSecurityConfigurerAdapter了,只是作為一個普通的配置類,加上 @Configuration 注解即可。
  • 提供 UserDetailsService 實例,相當(dāng)于是我們的數(shù)據(jù)源。
  • 創(chuàng)建靜態(tài)內(nèi)部類繼承 WebSecurityConfigurerAdapter 類,同時用 @Configuration
  • 注解標(biāo)記靜態(tài)內(nèi)部類是一個配置類,配置類里邊的代碼就和之前的一樣了,無需贅述。
  • 每一個靜態(tài)內(nèi)部類相當(dāng)于就是一個過濾器鏈的配置。
  • 注意在靜態(tài)內(nèi)部類里邊,我沒有使用 http.authorizeRequests()
  • 開始,http.authorizeRequests() 配置表示該過濾器鏈過濾的路徑是 /。在靜態(tài)內(nèi)部類里邊,我是用了
  • http.antMatcher("/bar/") 開啟配置,表示將當(dāng)前過濾器鏈的攔截范圍限定在
  • /bar/**。所以有的時候authorizeRequests()不能放在第一個位置
  • 當(dāng)存在多個過濾器鏈的時候,必然會有一個優(yōu)先級的問題,所以每一個過濾器鏈的配置類上通過 @Order(2)
  • 注解來標(biāo)記優(yōu)先級。數(shù)字越大優(yōu)先級越低。請求會先進(jìn)入優(yōu)先級高的過濾器鏈中。

到此這篇關(guān)于SpringSecurity定義多個過濾器鏈的文章就介紹到這了,更多相關(guān)SpringSecurity多個過濾器鏈內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Boot中Redis數(shù)據(jù)庫的使用實例

    Spring Boot中Redis數(shù)據(jù)庫的使用實例

    Spring Boot中除了對常用的關(guān)系型數(shù)據(jù)庫提供了優(yōu)秀的自動化支持之外,對于很多NoSQL數(shù)據(jù)庫一樣提供了自動化配置的支持。本篇文章主要介紹了Spring Boot中Redis的使用實例代碼,有興趣的開業(yè)了解一下。
    2017-04-04
  • 詳解Jmeter中的BeanShell腳本

    詳解Jmeter中的BeanShell腳本

    BeanShell是一種完全符合Java語法規(guī)范的腳本語言,并且又擁有自己的一些語法和方法,所以它和java是可以無縫銜接的,學(xué)了Java的一些基本語法后,就可以來在Jmeter中寫寫B(tài)eanShell腳本了
    2021-12-12
  • Java如何實現(xiàn)通過證書訪問Https請求

    Java如何實現(xiàn)通過證書訪問Https請求

    這篇文章主要介紹了Java如何實現(xiàn)通過證書訪問Https請求,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java利用redis zset實現(xiàn)延時任務(wù)詳解

    Java利用redis zset實現(xiàn)延時任務(wù)詳解

    zset作為redis的有序集合數(shù)據(jù)結(jié)構(gòu)存在,排序的依據(jù)就是score。本文就將利用zset score這個排序的這個特性,來實現(xiàn)延時任務(wù),感興趣的可以了解一下
    2022-08-08
  • Mybatis如何使用正則模糊匹配多個數(shù)據(jù)

    Mybatis如何使用正則模糊匹配多個數(shù)據(jù)

    這篇文章主要介紹了Mybatis如何使用正則模糊匹配多個數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 關(guān)于@Transactional事務(wù)表被鎖的問題及解決

    關(guān)于@Transactional事務(wù)表被鎖的問題及解決

    這篇文章主要介紹了關(guān)于@Transactional事務(wù)表被鎖的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 實例分析java中重載與重寫的區(qū)別

    實例分析java中重載與重寫的區(qū)別

    這篇文章主要介紹了實例分析java中重載與重寫的區(qū)別,需要的朋友可以參考下
    2014-07-07
  • SpringSecurity請求授權(quán)規(guī)則配置與注解詳解

    SpringSecurity請求授權(quán)規(guī)則配置與注解詳解

    這篇文章主要介紹了SpringSecurity請求授權(quán)規(guī)則配置與注解詳解,我們常使用@Secured與@PreAuthorize兩個注解在進(jìn)入方法前進(jìn)行角色、權(quán)限的控制,進(jìn)入方法前數(shù)據(jù)的過濾@PreFilter注解偶爾會看到,需要的朋友可以參考下
    2023-12-12
  • 解讀@ConfigurationProperties的基本用法

    解讀@ConfigurationProperties的基本用法

    這篇文章主要介紹了@ConfigurationProperties的基本用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • SpringBoot整合WebSocket實現(xiàn)聊天室流程全解

    SpringBoot整合WebSocket實現(xiàn)聊天室流程全解

    WebSocket協(xié)議是基于TCP的一種新的網(wǎng)絡(luò)協(xié)議。本文將通過SpringBoot集成WebSocket實現(xiàn)簡易聊天室,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,感興趣的可以了解一下
    2023-01-01

最新評論

瑞金市| 宜君县| 晴隆县| 临颍县| 奇台县| 遵义市| 孝义市| 肥西县| 平果县| 漠河县| 宜宾县| 泸州市| 定结县| 晋城| 永丰县| 涟源市| 泾源县| 阿克| 安泽县| 游戏| 永济市| 黎城县| 扎兰屯市| 那坡县| 沙洋县| 夏河县| 井研县| 十堰市| 泰宁县| 平邑县| 安塞县| 察隅县| 从化市| 巴林右旗| 绍兴县| 黄陵县| 海南省| 黄浦区| 东山县| 抚顺市| 桃园市|