欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringSecurity定義多個(gè)過(guò)濾器鏈的操作代碼

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

簡(jiǎn)介

  • Spring Security 是 Spring家族中的一個(gè)安全管理框架。相比與另外一個(gè)安全框架Shiro,它提供了更豐富的功能,社區(qū)資源也比Shiro豐富。
  • 一般來(lái)說(shuō)中大型的項(xiàng)目都是使用SpringSecurity來(lái)做安全框架。小項(xiàng)目有Shiro的比較多,因?yàn)橄啾扰cSpringSecurity,Shiro的上手更加的簡(jiǎn)單。

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

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

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

在Spring Security中可以定義多個(gè)過(guò)濾器鏈,一個(gè)WebSerityConfigurerAdapter的實(shí)例就可以配置一個(gè)過(guò)濾器鏈,我們只需要配置多個(gè)WebSerityConfigurerAdapter的實(shí)例即可

在這里插入圖片描述

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

@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();
        }
    }
}

說(shuō)明:

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

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

相關(guān)文章

  • Jmeter跨線程組傳值調(diào)用實(shí)現(xiàn)圖解

    Jmeter跨線程組傳值調(diào)用實(shí)現(xiàn)圖解

    這篇文章主要介紹了Jmeter跨線程組傳值調(diào)用實(shí)現(xiàn)圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • java實(shí)現(xiàn)的新浪微博分享代碼實(shí)例

    java實(shí)現(xiàn)的新浪微博分享代碼實(shí)例

    這篇文章主要介紹了java實(shí)現(xiàn)的新浪微博分享代碼實(shí)例,是通過(guò)新浪API獲得授權(quán),然后接受客戶端請(qǐng)求的數(shù)據(jù),第三方應(yīng)用發(fā)送請(qǐng)求消息到微博,喚起微博分享界面,非常的實(shí)用,有相同需要的小伙伴可以參考下。
    2015-03-03
  • Java責(zé)任鏈設(shè)計(jì)模式實(shí)例分析

    Java責(zé)任鏈設(shè)計(jì)模式實(shí)例分析

    這篇文章主要介紹了Java責(zé)任鏈設(shè)計(jì)模式,結(jié)合實(shí)例形式詳細(xì)分析了Java責(zé)任鏈設(shè)計(jì)模式的原理與相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • Java 實(shí)現(xiàn)棧的三種方式

    Java 實(shí)現(xiàn)棧的三種方式

    這篇文章主要介紹了棧:LIFO(后進(jìn)先出),自己實(shí)現(xiàn)一個(gè)棧,要求這個(gè)棧具有push()、pop()(返回棧頂元素并出棧)、peek() (返回棧頂元素不出棧)、isEmpty()這些基本的方法,需要的朋友可以參考下
    2020-12-12
  • 基于java查找并打印輸出字符串中字符出現(xiàn)次數(shù)

    基于java查找并打印輸出字符串中字符出現(xiàn)次數(shù)

    這篇文章主要介紹了基于java查找并打印輸出字符串中字符出現(xiàn)次數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • SpringBoot中的異步任務(wù)解析

    SpringBoot中的異步任務(wù)解析

    這篇文章主要介紹了SpringBoot中的異步任務(wù)解析,SpringBoot 異步任務(wù)是一種在SpringBoot框架中使用的異步處理機(jī)制,可以提高系統(tǒng)的并發(fā)能力和響應(yīng)速度,需要的朋友可以參考下
    2023-10-10
  • Ubuntu 15下安裝Eclipse經(jīng)驗(yàn)分享

    Ubuntu 15下安裝Eclipse經(jīng)驗(yàn)分享

    這篇文章主要為大家分享了Ubuntu 15下安裝Eclipse經(jīng)驗(yàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • SpringBoot創(chuàng)建動(dòng)態(tài)定時(shí)任務(wù)的幾種方式小結(jié)

    SpringBoot創(chuàng)建動(dòng)態(tài)定時(shí)任務(wù)的幾種方式小結(jié)

    SpringBoot提供了多種實(shí)現(xiàn)定時(shí)任務(wù)的方式,包括使用@Scheduled注解、SchedulingConfigurer接口、TaskScheduler接口和Quartz框架,@Scheduled適合簡(jiǎn)單的定時(shí)任務(wù),文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • Java前后端的JSON傳輸方式(前后端JSON格式轉(zhuǎn)換)

    Java前后端的JSON傳輸方式(前后端JSON格式轉(zhuǎn)換)

    這篇文章主要介紹了Java前后端的JSON傳輸方式(前后端JSON格式轉(zhuǎn)換),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Spring @Lookup深入分析實(shí)現(xiàn)原理

    Spring @Lookup深入分析實(shí)現(xiàn)原理

    這篇文章主要介紹了Spring @Lookup實(shí)現(xiàn)原理,我們知道在spring容器中單獨(dú)的一個(gè)抽象類是不能成為一個(gè)bean的,那么有沒(méi)有辦法呢?這個(gè)時(shí)候我們可以使用Lookup注解
    2023-01-01

最新評(píng)論