老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

SpringSecurity如何自定義驗證方法-創新互聯

這篇文章主要介紹Spring Security如何自定義驗證方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

目前創新互聯建站已為近千家的企業提供了網站建設、域名、網站空間成都網站托管、企業網站設計、措勤網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。

Spring Security的本質

Spring Security 本質上是一連串的 Filter , 然后又以一個獨立的 Filter 的形式插入到 Filter Chain 里,其名為 FilterChainProxy 。 如圖所示。

Spring Security如何自定義驗證方法

實際上 FilterChainProxy 下面可以有多條 Filter Chain ,來針對不同的URL做驗證,而 Filter Chain 中所擁有的 Filter 則會根據定義的服務自動增減。所以無需要顯示再定義這些 Filter ,除非想要實現自己的邏輯。

Spring Security如何自定義驗證方法

關鍵類

Authentication

Authentication 是一個接口,用來表示用戶認證信息,在用戶登錄認證之前相關信息會封裝為一個 Authentication 具體實現類的對象,在登錄認證成功之后又會生成一個信息更全面,包含用戶權限等信息的 Authentication 對象,然后把它保存在 SecurityContextHolder 所持有的 SecurityContext 中,供后續的程序進行調用,如訪問權限的鑒定等。

AuthenticationManager

用來做驗證的最主要的接口為 AuthenticationManager ,這個接口只有一個方法:

public interface AuthenticationManager {
 Authentication authenticate(Authentication authentication)
 throws AuthenticationException;
}

其中 authenticate() 方法運行后可能會有三種情況:

驗證成功,返回一個帶有用戶信息的 Authentication 。

驗證失敗,拋出一個 AuthenticationException 異常。

無法判斷,返回 null 。

ProviderManager

ProviderManager 是上面的 AuthenticationManager 最常見的實現,它不自己處理驗證,而是將驗證委托給其所配置的 AuthenticationProvider 列表,然后會依次調用每一個 AuthenticationProvider 進行認證,這個過程中只要有一個 AuthenticationProvider 驗證成功,就不會再繼續做更多驗證,會直接以該認證結果作為 ProviderManager 的認證結果。

Spring Security如何自定義驗證方法

認證過程

用戶使用用戶名和密碼進行登錄。

Spring Security 將獲取到的用戶名和密碼封裝成一個 Authentication 接口的實現類,比如常用的 UsernamePasswordAuthenticationToken 。

將上述產生的 Authentication 對象傳遞給 AuthenticationManager 的實現類 ProviderManager 進行認證。

ProviderManager 依次調用各個 AuthenticationProvider 進行認證,認證成功后返回一個封裝了用戶權限等信息的 Authentication 對象。

將 AuthenticationManager 返回的 Authentication 對象賦予給當前的 SecurityContext 。

自定義驗證

有了以上的知識儲備后就可以來自定義驗證方法了。通過上面可以看出,實際上真正來做驗證操作的是一個個的 AuthenticationProvider ,所以如果要自定義驗證方法,只需要實現一個自己的 AuthenticationProvider 然后再將其添加進 ProviderManager 里就行了。

自定義AuthenticationProvider

@Component
public class CustomAuthenticationProvider
 implements AuthenticationProvider {
 @Override
 public Authentication authenticate(Authentication authentication) 
 throws AuthenticationException {
 String name = authentication.getName();
 String password = authentication.getCredentials().toString();
 if (shouldAuthenticateAgainstThirdPartySystem()) {
  // use the credentials
  // and authenticate against the third-party system
  return new UsernamePasswordAuthenticationToken(
  name, password, new ArrayList<>());
 } else {
  return null;
 }
 }
 @Override
 public boolean supports(Class authentication) {
 return authentication.equals(
  UsernamePasswordAuthenticationToken.class);
 }
}

其中的 supports() 方法接受一個 authentication 參數,用來判斷傳進來的 authentication 是不是該 AuthenticationProvider 能夠處理的類型。

注冊AuthenticationProvider

現在再將剛創建的 AuthenticationProvider 在 與ProviderManager 里注冊,所有操作就完成了。

@Configuration
@EnableWebSecurity
@ComponentScan("org.baeldung.security")
public class SecurityConfig extends WebSecurityConfigurerAdapter {
 @Autowired
 private CustomAuthenticationProvider authProvider;
 @Override
 protected void configure(
 AuthenticationManagerBuilder auth) throws Exception {
 auth.authenticationProvider(authProvider);
 }
 @Override
 protected void configure(HttpSecurity http) throws Exception {
 http.authorizeRequests().anyRequest().authenticated()
  .and()
  .httpBasic();
 }
}

以上是“Spring Security如何自定義驗證方法”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注創新互聯行業資訊頻道!


網站題目:SpringSecurity如何自定義驗證方法-創新互聯
本文地址:http://www.xueling.net.cn/article/csoehg.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 欧美精选视频在线观看 | 大又大又粗又硬又爽少妇毛片 | 伊人丁香五月婷婷综合激情四射网 | 亚洲精品77777 | 白丝袜美女扒开内衣网站 | 免费av手机在线观看 | 在线观看一级黄色片 | 国产人妻无码一区二区三区不卡 | 美女下部隐私(不遮挡) | 亚洲在线综合 | 男女高潮又爽又黄又无遮挡 | 欧美色欧美亚洲高清在线观看 | 成人看片在线观看 | 午夜在线播放视频 | 熟妇高潮一区二区三区 | 国产欧美日韩另类在线专区 | 国产∨亚洲V天堂无码久久久 | 国产精品中文久久久久久久 | 国产无遮挡无码裸体视频在现观看 | 锵锵锵锵锵免费完整观看动漫最新章节 | 精品欧美一二三区 | 国产又粗又猛又爽又黄的视频软件 | 日韩欧美一区二区三区不学 | 久久精品国产69国产精品亚洲 | 国产亚洲精品一区二区在线观看 | 欧美一级色片 | 亚洲综合久 | 亚洲h片在线观看 | 国产精品久久久尹人香蕉 | 国产精品青草久久久久婷婷 | 久久婷婷爱 | 欧美一级黄色片免费看 | 青青艹在线视频 | 色婷婷久久 | 亚洲第一综合最大av | 麻豆成人精品 | 视频在线亚洲 | 国产在线乱码一区二区三区 | 中文字幕免费精品一区高清 | 亚洲欧洲日韩在线 | 国产chinesehdxxxx老太婆 |