91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

為什么加了一個Spring Security依賴所有接口都無法訪問

發布時間:2021-10-09 14:46:39 來源:億速云 閱讀:308 作者:iii 欄目:編程語言

本篇內容主要講解“為什么加了一個Spring Security依賴所有接口都無法訪問”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“為什么加了一個Spring Security依賴所有接口都無法訪問”吧!

正文

  1. 當我們在項目中添加了 Spring Security 依賴后, 即使不做任何配置, 它也默認會幫我們攔截掉所有請求.

  2. 為了修改 Spring Security 的默認行為, 我們需要做一些配置, 也就是通過重寫 WebSecurityConfigurerAdapterconfigure(HttpSecurity http) 方法.

那么問題來了, 為什么僅僅加了一個 Spring Security 依賴, 就可以攔截請求了?

答案自然跟 Springboot 的自動裝配有關系.

SecurityAutoConfiguration 裝配類

通過 @Import 注解, 可以找到 SpringBootWebSecurityConfiguration

@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(DefaultAuthenticationEventPublisher.class)
@EnableConfigurationProperties(SecurityProperties.class)
@Import({ SpringBootWebSecurityConfiguration.class, WebSecurityEnablerConfiguration.class,
		SecurityDataConfiguration.class })
public class SecurityAutoConfiguration {

	@Bean
	@ConditionalOnMissingBean(AuthenticationEventPublisher.class)
	public DefaultAuthenticationEventPublisher authenticationEventPublisher(ApplicationEventPublisher publisher) {
		return new DefaultAuthenticationEventPublisher(publisher);
	}

}

SpringBootWebSecurityConfiguration 類

  1. @ConditionalOnMissingBean(WebSecurityConfigurerAdapter.class) 可以看出, 當項目中沒有配置 WebSecurityConfigurerAdapter 時, 這個配置類才會生效.

  2. 當這個配置類生效后, 會幫我們配置一個默認的 WebSecurityConfigurerAdapter

  3. 由前面可知, 通過配置 WebSecurityConfigurerAdapter 可以實現定義攔截方式.

@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(WebSecurityConfigurerAdapter.class)
@ConditionalOnMissingBean(WebSecurityConfigurerAdapter.class)
@ConditionalOnWebApplication(type = Type.SERVLET)
public class SpringBootWebSecurityConfiguration {

	@Configuration(proxyBeanMethods = false)
	@Order(SecurityProperties.BASIC_AUTH_ORDER)
	static class DefaultConfigurerAdapter extends WebSecurityConfigurerAdapter {

	}

}

WebSecurityConfigurerAdapter 的默認行為

從下面的默認配置可以得知, 默認的配置是所有的請求都需要登錄認證.

protected void configure(HttpSecurity http) throws Exception {
	
    http
       .authorizeRequests()
       // 重點
       .anyRequest().authenticated()
       .and()
       .formLogin().and()
	.httpBasic();
    }

總結

當我們的 Springboot 工程引入 Spring Security 依賴后, 項目中的 “安全機制” 就已經開啟了.

因為根據 Spring boot 的自動裝配原理, 在加載 SecurityAutoConfiguration 配置類時, 會再加載 SpringBootWebSecurityConfiguration 配置類.

而在 SpringBootWebSecurityConfiguration 類中, 默認幫我們初始化了一個WebSecurityConfigurerAdapter 類.

WebSecurityConfigurerAdapter 的有一個作用就是 配置訪問請求需要的權限.

如果不覆蓋此類的 configure(HttpSecurity http) 方法, 它的默認行為就是 要求對所有的請求進行登錄認證.

到此,相信大家對“為什么加了一個Spring Security依賴所有接口都無法訪問”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

庆云县| 微山县| 如东县| 千阳县| 阿拉善左旗| 黑河市| 交城县| 吴堡县| 梅州市| 桐城市| 花莲市| 华容县| 萨迦县| 新乡市| 定兴县| 靖边县| 江阴市| 横峰县| 江孜县| 中山市| 额敏县| 灵武市| 扎赉特旗| 青田县| 乌什县| 砚山县| 雷山县| 北海市| 阳谷县| 伽师县| 芦山县| 巨野县| 玉树县| 隆回县| 吴堡县| 明水县| 黔江区| 报价| 泗洪县| 中山市| 东城区|