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

Go項目開發(fā)實戰(zhàn) - 用戶 Token 的派發(fā)、存儲和認證管理

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

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

本節(jié)內(nèi)容大綱如下:

圖片圖片

Token串的自解釋性和生成規(guī)則

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

圖片圖片

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

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

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

圖片圖片

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

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

  • Token反解析出UserID的代碼實現(xiàn)

Token的生成和存儲

Token生成的流程解讀

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

圖片圖片

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

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

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

圖片圖片

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

圖片


Token的校驗

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

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

請求的結(jié)果如下:

圖片圖片

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

總結(jié)

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

git fetch --tags
git checkout tags/c11

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

圖片圖片

責任編輯:武曉燕 來源: 網(wǎng)管叨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

京東訂單派發(fā)架構

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數(shù)據(jù)庫

2024-12-11 09:13:00

2020-05-28 10:53:32

存儲數(shù)據(jù)框架
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美视频在线播放 | 天天干天天色 | 欧美日韩国产在线 | 在线电影日韩 | 九热在线 | 一级a性色生活片久久毛片波多野 | 亚洲成人福利 | 色免费看| 精品国产一区二区三区免费 | 色性av | 天堂一区二区三区四区 | 91精品久久久久久久久 | 视频一区二区在线 | 欧美一区二区免费 | 精品免费视频 | 亚洲欧美精品在线观看 | 天天精品在线 | 91久久久久久久久久久 | 欧美成人免费在线视频 | 国产精品视频一二三区 | 免费看a | 国产黄色网| 精品国产乱码久久久久久闺蜜 | 99爱视频 | 日韩在线观看网站 | 欧美a在线观看 | 亚洲在线一区二区 | 91av在线免费| 国产一区二区三区视频 | 欧美一区日韩一区 | 一区二区三区在线播放 | 久久亚洲欧美日韩精品专区 | 日本免费一区二区三区四区 | 欧美在线二区 | 国产日韩欧美 | 国产在线观看一区二区三区 | 青青草精品 | 不卡一区 | 欧美黄色一级毛片 | 亚卅毛片 | 瑟瑟激情|