成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Go項目開發實戰 - 用戶 Token 的派發、存儲和認證管理

開發 前端
無論Token信息在產品的服務端有哪些構成信息,我們發放給客戶端的都是隨機的字符串,客戶端訪問服務端API時會攜帶著Token串來訪問。

從這一節開始我們來演示如何按照思路實現一個用戶認證體系,本節我們主要關注用戶Token的生成、存儲以及認證,下一節我們會專注Token的刷新、主動踢人下線和防盜檢測。

本節內容大綱如下:

圖片圖片

Token串的自解釋性和生成規則

我們的用戶認證體系里有兩種Token:AccessToken以及刷新它用的RefreshToken。

圖片圖片

無論Token信息在產品的服務端有哪些構成信息,我們發放給客戶端的都是隨機的字符串,客戶端訪問服務端API時會攜帶著Token串來訪問。

Token串的生成算法多種多樣,簡單的MD5一下子,復雜的會各種加密,在我們項目中使用的則是一個兼具安全和可解釋性的Token生成算法

為每個用戶生成的Token的算法,會用大端序的排列方式把用戶ID放到固定位置后再進行AES加密,同時再追加一個類似salt串的隨機字符串作為前綴,把16進制轉換成字符串后一共有40個字符。

圖片圖片

因為生成Token時UserID放在了固定的字節位置,所以服務端拿到Token后可以解密后再把UserID取出來,這樣的話Token就具有了自解釋性在系統存儲掛掉的降級處理,或者是大數據分析應用日志、歸因用戶行為時都有一定幫助

解析Token的代碼在教程里就不再占用篇幅了,大家訂閱加入項目后訪問下面GitHub倉庫的代碼文件可查看詳細細節。

  • Token反解析出UserID的代碼實現

Token的生成和存儲

Token生成的流程解讀

用戶登錄授權,在給用戶發放Token前,服務端會存儲三份信息用于會話管理和認證。它們分別是AccessToken、RefreshToken 和 UserSession 的緩存信息,其緩存結構如下:

圖片圖片

這個我們在上一節討論過,其中UserSession是為用戶的每個登錄過的平臺單獨維護一份Session信息,根據它們的結構特點,我們選擇對三種緩存采用以下結構:

  • AccessToken、RefreshToken 緩存以各自的Token值做為緩存Key的關鍵要素,使用Redis String存儲JSON格式的Token信息
  • UserSession使用UserId做為緩存Key的關鍵要素部分,使用Redis 的Hash存儲,Hash中以每個登錄平臺的Platform名為字段Key,存儲相應用戶JSON格式的Session信息,這樣多個平臺登錄后的會話不會相互干擾。

Token生成邏輯的流程和內部細節我用一個順序圖給大家做了梳理,還有詳細的代碼指南

圖片圖片

項目中有完整的實現步驟以及Token生成、驗證的測試用例供我們邊調試代碼邊理解

圖片


Token的校驗

拿我們上面獲得的AccessToken來試驗Token的校驗,因為需要在Header中帶上Token, 需使用curl來發起請求,大家自己測試時可選擇使用POSTMAN等工具。

curl --header "Content-Type: application/json" \
  --header "go-mall-token: 3d7454dd7fe557917a0c195fceebd8c786acc97e" \
  http://localhost:8080/building/token-auth-test

請求的結果如下:

圖片圖片

大家加入項目后動手實踐時可以故意把Token寫錯看一下其他效果。

總結

本節的代碼版本號為c11,版本切換操作命令如下:

git fetch --tags
git checkout tags/c11

訪問 https://github.com/go-study-lab/go-mall/compare/c10...c11 能看本章節的詳細代碼。

圖片圖片

責任編輯:武曉燕 來源: 網管叨bi叨
相關推薦

2025-01-08 09:07:06

2025-02-26 09:03:24

2024-12-30 09:12:17

2025-01-15 09:21:01

2025-02-10 09:03:29

2025-04-25 08:30:00

前端后端用戶登錄

2024-11-13 09:13:45

2025-03-04 00:00:05

Go項目分類樹

2025-03-07 09:01:14

商品模塊接口項目

2018-11-06 14:05:27

京東訂單派發架構

2025-03-10 09:07:20

2013-12-09 16:31:58

2025-03-18 09:05:28

2025-04-28 01:55:00

工具sqlmockSQL

2022-03-13 23:51:39

Web項目Go

2024-10-30 09:29:30

Go項目Error

2019-10-11 15:10:09

GVMGoLinux

2023-04-10 08:11:27

Jenkins數據庫

2024-12-11 09:13:00

2020-05-28 10:53:32

存儲數據框架
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人妇女免费播放久久久 | 精品国产不卡一区二区三区 | 亚洲精品久久久一区二区三区 | 毛片入口 | 精品91| 亚洲精品电影在线观看 | 国产综合网址 | 国产精品久久国产精品久久 | 亚洲精品免费观看 | 久久夜色精品国产 | 99精品在线免费观看 | 特级毛片www| 亚洲欧美中文日韩在线v日本 | 久久久久国产精品一区二区 | h片在线免费观看 | 国产精品视频不卡 | 国产目拍亚洲精品99久久精品 | 亚洲精品一区二区在线观看 | 成人影视网址 | 欧美a级成人淫片免费看 | 国产一极毛片 | 99久久久久国产精品免费 | 日韩视频免费看 | 黄色一级电影免费观看 | 精品国产第一区二区三区 | 黄网站涩免费蜜桃网站 | 久久精品久久久久久 | 国产在线拍偷自揄拍视频 | 国产一区二区欧美 | 91视频中文 | 2018国产精品 | 精品一区二区三区电影 | 亚洲不卡av在线 | 亚洲网在线 | 久久精品国产99国产精品 | 九九久久免费视频 | 9色网站| 中文字幕第一页在线 | 久久精品视频12 | 成人免费一级视频 | 免费一区二区三区 |