CheckToken的目的
當使用者攜帶token 請求資源伺服器的資源時, OAuth2AuthenticationProcessingFilter 攔截token,進行token 和userdetails 過程,把無狀態的token 轉化成使用者資訊。
詳解
-
OAuth2AuthenticationManager.authenticate(),filter執行判斷的入口
-
當使用者攜帶token 去請求微服務模組,被資源伺服器攔截呼叫RemoteTokenServices.loadAuthentication ,執行所謂的check-token過程。 原始碼如下
-
CheckToken 處理邏輯很簡單,就是呼叫redisTokenStore 查詢token的合法性,及其返回使用者的部分資訊 (username )
- 繼續看 返回給 RemoteTokenServices.loadAuthentication 最後一句 tokenConverter.extractAuthentication 解析組裝服務端返回的資訊
- 最重要的一步,是否判斷是否有userDetailsService實現,如果有 的話去查根據 返回的 username 查詢一次全部的使用者資訊,沒有實現直接返回username,這也是很多時候問的為什麼只能查詢到username 也就是 EnablePigxResourceServer.details true 和false 的區別。
- 那根據的你問題,繼續看 UerDetailsServiceImpl.loadUserByUsername 根據使用者名稱去換取使用者全部資訊。
關於pig
基於Spring Cloud、oAuth2.0開發基於Vue前後分離的開發平臺,支援賬號、簡訊、SSO等多種登入,提供配套視訊開發教程。
gitee.com/log4j/pig