您好,我是湘王,這是我的頭條號「湘王說」,歡迎您來,歡迎您再來~
前面執行寫好的程式碼之所以沒有任何顯示,是因為還沒有對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,其他方法都不能正常訪問!
感謝您的大駕光臨!諮詢技術、產品、運營和管理相關問題,請關注後留言。歡迎騷擾,不勝榮幸~
我在頭條