国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

spring security @EnableWebSecurity自動配置DaoAuthenticationProvider流程

這篇具有很好參考價(jià)值的文章主要介紹了spring security @EnableWebSecurity自動配置DaoAuthenticationProvider流程。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

版本

spring-security:6.2.1

滿足下列情況時(shí),spring-security會自動配置DaoAuthenticationProvider

  • 使用@EnableWebSecurity
  • 注冊UserDetailsServiceBean
  • 沒有注冊其他AuthenticationProvider類型的Bean
  • 沒有通過http.authenticationProvider配置

源碼

org.springframework.security.config.annotation.web.configuration.EnableWebSecurity

// 導(dǎo)入全局認(rèn)證配置
@EnableGlobalAuthentication
public @interface EnableWebSecurity {}

org.springframework.security.config.annotation.authentication.configuration.EnableGlobalAuthentication

// 導(dǎo)入認(rèn)證配置
@Import(AuthenticationConfiguration.class)
public @interface EnableGlobalAuthentication {}

org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration

public class AuthenticationConfiguration {
	...
	@Bean
	public static InitializeUserDetailsBeanManagerConfigurer initializeUserDetailsBeanManagerConfigurer(
			ApplicationContext context) {
		return new InitializeUserDetailsBeanManagerConfigurer(context);
	}
	...
}

org.springframework.security.config.annotation.authentication.configuration.InitializeUserDetailsBeanManagerConfigurer

@Order(InitializeUserDetailsBeanManagerConfigurer.DEFAULT_ORDER)
class InitializeUserDetailsBeanManagerConfigurer extends GlobalAuthenticationConfigurerAdapter {
	...
	@Override
	public void init(AuthenticationManagerBuilder auth) throws Exception {
		auth.apply(new InitializeUserDetailsManagerConfigurer());
	}
	class InitializeUserDetailsManagerConfigurer extends GlobalAuthenticationConfigurerAdapter {
		@Override
		public void configure(AuthenticationManagerBuilder auth) throws Exception {
			if (auth.isConfigured()) { // 如果認(rèn)證提供者不為空(通過httpSecurity配置了認(rèn)證提供者,或者注冊了AuthenticationProvider類型的Bean),或者上級的認(rèn)證管理器不為空則跳過
				return;
			}
			UserDetailsService userDetailsService = getBeanOrNull(UserDetailsService.class);
			if (userDetailsService == null) { // 如果沒有注冊 UserDetailsService Bean則跳過
				return;
			}
			// 獲取密碼編碼器 Bean
			PasswordEncoder passwordEncoder = getBeanOrNull(PasswordEncoder.class);
			// 獲取 UserDetailsPasswordService Bean (用于密碼重新編碼)
			UserDetailsPasswordService passwordManager = getBeanOrNull(UserDetailsPasswordService.class);
			// 創(chuàng)建并注冊 DaoAuthenticationProvider 
			DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
			provider.setUserDetailsService(userDetailsService);
			if (passwordEncoder != null) {
				provider.setPasswordEncoder(passwordEncoder);
			}
			if (passwordManager != null) {
				provider.setUserDetailsPasswordService(passwordManager);
			}
			provider.afterPropertiesSet();
			auth.authenticationProvider(provider);
		}
	}
	...
}

org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder文章來源地址http://www.zghlxwxcb.cn/news/detail-799480.html

public class AuthenticationManagerBuilder
		extends AbstractConfiguredSecurityBuilder<AuthenticationManager, AuthenticationManagerBuilder>
		implements ProviderManagerBuilder<AuthenticationManagerBuilder> {
		...
		public boolean isConfigured() {
			return !this.authenticationProviders.isEmpty() || this.parentAuthenticationManager != null;
		}
		...
}

到了這里,關(guān)于spring security @EnableWebSecurity自動配置DaoAuthenticationProvider流程的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SSM項(xiàng)目集成Spring Security 4.X版本(使用spring-security.xml 配置文件方式)

    SSM項(xiàng)目集成Spring Security 4.X版本(使用spring-security.xml 配置文件方式)

    目錄 前言 實(shí)戰(zhàn)開發(fā): 一、Spring Security整合到SSM項(xiàng)目 1. pom文件引入包 2. web.xml 配置 3. 添加 spring-security.xml 文件 二、Spring Security實(shí)戰(zhàn)應(yīng)用 1. 項(xiàng)目結(jié)構(gòu) 2. pom文件引入 3. web.xml 配置 4. Spring?配置?applicationContext.xml 5.?spring-security.xml 配置 6.?springmvc.xml?配置 7. 創(chuàng)建實(shí)體類 8. DAO層實(shí)

    2024年01月24日
    瀏覽(22)
  • Spring Boot安全管理—Spring Security基本配置

    Spring Boot安全管理—Spring Security基本配置

    1.1 創(chuàng)建項(xiàng)目,添加依賴 創(chuàng)建一個(gè)Spring Boot Web 項(xiàng)目,然后添加spring-boot-starter-security依賴。 1.2 添加hello接口 在項(xiàng)目中添加一個(gè)簡單的/hello接口,內(nèi)容如下: 1.3 啟動項(xiàng)目測試 訪問/hello接口會自動跳轉(zhuǎn)到登錄頁面,這個(gè)頁面有Spring Security提供的。 默認(rèn)的用戶名是user,默認(rèn)的登

    2024年02月08日
    瀏覽(21)
  • Spring Security 6 配置方法,廢棄 WebSecurityConfigurerAdapter

    Spring Security 6 配置方法,廢棄 WebSecurityConfigurerAdapter

    最近阿里云的項(xiàng)目遷回本地運(yùn)行,數(shù)據(jù)庫從阿里云的RDS(即Mysql5.6)換成了本地8.0,Redis也從古董級別的2.x換成了現(xiàn)在6,忍不住,手癢,把jdk升級到了17,用zgc垃圾回收器,源代碼重新編譯重新發(fā)布,結(jié)果碰到了古董的SpringBoot不支持jdk17,所以有了這篇日志。記錄一下SpringBo

    2024年02月01日
    瀏覽(20)
  • Spring Security之基于HttpRequest配置權(quán)限

    Spring Security之基于HttpRequest配置權(quán)限

    今天我們重點(diǎn)聊聊授權(quán)方式的另外一種:基于HttpServletRequest配置權(quán)限 一個(gè)典型的配置demo 從這里也可以看出,要實(shí)現(xiàn)基于RBAC,還是比較容易的。也比較容易使用。但是如果想要動態(tài)的增加角色,就需要我們定制AuthorizationManager。 HttpSecurity是負(fù)責(zé)構(gòu)建DefaultSecurityFilterChain的。而

    2024年04月11日
    瀏覽(20)
  • 【高?!縎pring Security鑒權(quán)規(guī)則錯誤配置風(fēng)險(xiǎn)

    【高危】Spring Security鑒權(quán)規(guī)則錯誤配置風(fēng)險(xiǎn)

    Spring Security 是一套為基于Spring的應(yīng)用程序提供說明性安全保護(hù)的安全框架。 在 Spring Security 受影響的版本中,由于 Spring Security 的授權(quán)規(guī)則會應(yīng)用于整個(gè)應(yīng)用程序上下文,當(dāng)應(yīng)用程序中包含多個(gè)servlet,并且其中一個(gè)為DispatcherServlet時(shí) ,使用 requestMatchers(String) 方法錯誤地將非

    2024年02月15日
    瀏覽(34)
  • Springboot 實(shí)踐(6)spring security配置與運(yùn)用

    ????????前文講解了springboot項(xiàng)目添加靜態(tài)資源目錄,到目前為止,項(xiàng)目已經(jīng)建立了后臺服務(wù)控制、靜態(tài)資源目錄等服務(wù);項(xiàng)目開發(fā)是為特定用戶服務(wù)的,不具備訪問權(quán)限用戶,不允許訪問系統(tǒng),那么如何對系統(tǒng)資源進(jìn)行保護(hù)呢?這就涉及到了我們此文所要引入的spring sec

    2024年02月12日
    瀏覽(14)
  • 權(quán)限管理詳解:認(rèn)證、授權(quán)及Spring Security配置解析

    權(quán)限管理詳解:認(rèn)證、授權(quán)及Spring Security配置解析

    深入探討權(quán)限管理的重要性與實(shí)現(xiàn)方式,包括認(rèn)證、授權(quán)概念,基于角色和資源的訪問控制方案,以及Spring Security框架的概述和快速入門指南。

    2023年04月10日
    瀏覽(22)
  • Spring Security OAuth Client配置加載源碼分析

    Spring Security OAuth Client配置加載源碼分析

    相關(guān)文章: OAuth2的定義和運(yùn)行流程 Spring Security OAuth實(shí)現(xiàn)Gitee快捷登錄 Spring Security OAuth實(shí)現(xiàn)GitHub快捷登錄 Spring Security的過濾器鏈機(jī)制 這一節(jié)我們以前面默認(rèn)的OAuth2 客戶端集成為例,來了解下配置文件的加載,示例見第二、第三節(jié)。 假如你沒有看過相關(guān)視頻,或者書,但想要

    2024年02月08日
    瀏覽(18)
  • 后端進(jìn)階之路——深入理解Spring Security配置(二)

    后端進(jìn)階之路——深入理解Spring Security配置(二)

    「作者主頁」 :雪碧有白泡泡 「個(gè)人網(wǎng)站」 :雪碧的個(gè)人網(wǎng)站 「推薦專欄」 : ★ java一站式服務(wù) ★ ★ 前端炫酷代碼分享 ★ ★ uniapp-從構(gòu)建到提升 ★ ★ 從0到英雄,vue成神之路 ★ ★ 解決算法,一個(gè)專欄就夠了 ★ ★ 架構(gòu)咱們從0說 ★ ★ 數(shù)據(jù)流通的精妙之道★ ★后端進(jìn)

    2024年02月14日
    瀏覽(32)
  • Secure CRT 自動記錄日志和時(shí)間戳功能配置的方法

    我是開始工作后才使用SecureCRT,一直沒記錄過日志不過搜了下,看看這功能不錯,可以看看自己做什么,有時(shí)甚至可以看看之前是不是犯了什么錯,很不錯的功能所以我也決定開始記錄日志,設(shè)置很簡單,不過我自己瞎搗鼓發(fā)現(xiàn)還可以自動分文件夾,不知道大家是否都知道,因

    2024年02月07日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包