您好,我是湘王,這是我的頭條号「湘王說」,歡迎您來,歡迎您再來~
前面運作寫好的代碼之是以沒有任何顯示,是因為還沒有對Spring Security進行配置,當然啥也不顯示了。這就好比你坐在車上,卻不打開發動機,車子當然跑不起來。是以咱們就來讓它跑起來。不過在配置之前,有必要對Spring Security的登入流程做個大緻了解。
如果深入源碼去了解,這個玩意及其複雜,但是沒必要,知道它的機制就行了。就好比你買車也不必把發動機拆開去看它是怎麼工作的吧。簡單來說它就是下面這些步驟:
1、Spring Security通過AuthenticationManager接口進行身份驗證
2、ProviderManager是AuthenticationManager的一個預設實作
3、ProviderManager把驗證工作委托給了AuthenticationProvider接口
4、AuthenticationProvider的實作類DaoAuthenticationProvider會檢查身份認證
5、DaoAuthenticationProvider又把認證工作委托給了UserDetailsService接口
6、自定義UserDetailsService類從資料庫中擷取使用者賬号、密碼、角色等資訊,然後封裝成UserDetails傳回
7、使用Spring Security還需要自定義AuthenticationProvider接口,擷取使用者輸入的賬号、密碼等資訊,并封裝成Authentication接口
8、将UserDetails和Authentication進行比對,如果一緻就傳回UsernamePasswordAuthenticationToken,否則抛出異常
下面是認證流程圖:
首先重寫loadUserByUsername:
因為UserDetailsService傳回了封裝的UserDetails,是以需要再自定義AuthenticationProvider傳回Authentication接口:
接着來實作實作WebSecurityConfigurerAdapter,它通過重寫WebSecurityConfigurerAdapter中的相關方法(一般是configurer)來自定義配置。WebSecurityConfigurerAdapter主要做幾件事:
1、初始化
2、開啟Security
3、配置各種過濾器,實作驗證過濾器鍊
下面是它的代碼:
接着用postman進行測試:
回顧整個調用過程,它的時序圖是:
但是等等:好像除了/login,其他方法都不能正常通路!
感謝您的大駕光臨!咨詢技術、産品、營運和管理相關問題,請關注後留言。歡迎騷擾,不勝榮幸~