購物車
採用用戶必須先登錄才能使用購物車功能
1.1、購物車業務分析
(1)需求分析
用戶在商品詳細頁點擊加入購物車,提交商品SKU編號和購買數量,添加到購物車。購物車展示頁面如
下:
(2)購物車實現思路
我們實現的是用戶登錄後的購物車,用戶將商品加入購物車的時候,直接將要加入購物車的詳情存入到
Redis即可。每次查看購物車的時候直接從Redis中獲取。
1.2、 添加購物車
1.3、 購物車列表
1.3.1 思路分析
接着我們實現一次購物車列表操作。因爲存的時候是根據用戶名往 Redis中存儲用戶的購物車數據的,
所以我們這裏可以將用戶的名字作爲key去Redis中查詢對應的數據
1.4、 購物車渲染
如上圖所示 ,用戶每次將商品加入購物車,或者點擊購物車列表的時候,先經過訂單購物車後端渲染服
務,再通過feign調用購物車訂單微服務來實現購物車的操作,例如:加入購物車、購物車列表。
1.5、 商品數量變更
用戶可以點擊+號或者-號,或者手動輸入一個數字,然後更新購物車列表,我們可以給-+號一個點擊事
件,給數字框一個失去焦點事件,然後調用後臺,實現購物車的更新。
刪除商品購物車
我們發現個問題,就是用戶將商品加入購物車,無論數量是正負,都會執行添加購物車,如果數量如果
<=0,應該移除該商品的。
三、 微服務間認證
如上圖:因爲微服務之間並沒有傳遞頭文件,所以我們可以定義一個攔截器,每次微服務調用之前都先
檢查下頭文件,將請求的頭文件中的令牌數據再放入到header中,再調用其他微服務即可。
測試訪問購物車,產生如下效果:
3.2、 動態獲取當前登陸人
3.2.1 數據分析
用戶登錄後,數據會封裝到 SecurityContextHolder.getContext().getAuthentication() 裏面,
我們可以將數據從這裏面取出,然後轉換成 OAuth2AuthenticationDetails ,在這裏面可以獲取到令
牌信息、令牌類型等代碼如下:
這裏的 tokenValue是加密之後的令牌數據,remoteAddress是用戶的IP信息,tokenType是令牌類型。
我們可以獲取令牌加密數據後,使用公鑰對它進行解密,如果能解密說明數據無誤,如果不能解密用戶
也沒法執行到這一步。解密後可以從明文中獲取用戶信息