當前位置:首頁 » 網站資訊 » 網站後端怎麼生成token
擴展閱讀
手機連接電視網路設置 2025-09-20 00:03:33
新款蘋果電腦調節音樂 2025-09-19 23:46:10
蘋果刪除軟體後硬碟沒變 2025-09-19 22:55:46

網站後端怎麼生成token

發布時間: 2022-09-22 22:30:57

1. 伺服器生成token

如果對安全性要求較高,可以對app端的某些用戶信息或mac/ip等進行加密散列生成token;通常就使用uuid生成一個隨機值作為token就好了。是否寫進資料庫看自己的業務需求,比如如果要求伺服器掛掉重啟之後客戶端帶著掛掉前的token能夠正常訪問,那就需要寫進資料庫。

2. JWT生成token及過期處理方案

業務場景

在前後分離場景下,越來越多的項目使用token作為介面的安全機制,APP端或者WEB端(使用VUE、REACTJS等構建)使用token與後端介面交互,以達到安全的目的。本文結合stackover以及本身項目實踐,試圖總結出一個通用的,可落地的方案。

基本思路

用戶僅登錄一次,用戶改變密碼,則廢除token,重新登錄

1.0實現

1.登錄成功,返回access_token和refresh_token,客戶端緩存此兩種token;2.使用access_token請求介面資源,成功則調用成功;如果token超時,客戶端攜帶refresh_token調用中間件介面獲取新的access_token;3.中間件接受刷新token的請求後,檢查refresh_token是否過期。如過期,拒絕刷新,客戶端收到該狀態後,跳轉到登錄頁;如未過期,生成新的access_token和refresh_token並返回給客戶端(如有可能,讓舊的refresh_token失效),客戶端攜帶新的access_token重新調用上面的資源介面。4.客戶端退出登錄或修改密碼後,調用中間件注銷舊的token(使access_token和refresh_token失效),同時清空客戶端的access_token和refresh_toke。

後端表id user_id client_id client_secret refresh_token expire_in create_date del_flag

2.0實現

場景: access_token訪問資源 refresh_token授權訪問 設置固定時間X必須重新登錄

1.登錄成功,後台jwt生成access_token(jwt有效期30分鍾)和refresh_token(jwt有效期15天),並緩存到redis(hash-key為token,sub-key為手機號,value為設備唯一編號(根據手機號碼,可以人工廢除全部token,也可以根據sub-key,廢除部分設備的token。),設置過期時間為1個月,保證最終所有token都能刪除),返回後,客戶端緩存此兩種token;2.使用access_token請求介面資源,校驗成功且redis中存在該access_token(未廢除)則調用成功;如果token超時,中間件刪除access_token(廢除);客戶端再次攜帶refresh_token調用中間件介面獲取新的access_token;3.中間件接受刷新token的請求後,檢查refresh_token是否過期。如過期,拒絕刷新,刪除refresh_token(廢除); 客戶端收到該狀態後,跳轉到登錄頁;如未過期,檢查緩存中是否有refresh_token(是否被廢除),如果有,則生成新的access_token並返回給客戶端,客戶端接著攜帶新的access_token重新調用上面的資源介面。4.客戶端退出登錄或修改密碼後,調用中間件注銷舊的token(中間件刪除access_token和refresh_token(廢除)),同時清空客戶端側的access_token和refresh_toke。5.如手機丟失,可以根據手機號人工廢除指定用戶設備關聯的token。6.以上3刷新access_token可以增加根據登錄時間判斷最長X時間必須重新登錄,此時則拒絕刷新token。(拒絕的場景:失效,長時間未登錄,頻繁刷新)

2.0 變動1.登錄2.登錄攔截器3.增加刷新access_token介面4.退出登錄5.修改密碼

3.0實現

場景:自動續期 長時間未使用需重新登錄

1.登錄成功,後台jwt生成access_token(jwt有效期30分鍾),並緩存到redis(hash-key為access_token,sub-key為手機號,value為設備唯一編號(根據手機號碼,可以人工廢除全部token),設置access_token過期時間為7天,保證最終所有token都能刪除),返回後,客戶端緩存此token;

2.使用access_token請求介面資源,校驗成功且redis中存在該access_token(未廢除)則調用成功;如果token超時,中間件刪除access_token(廢除),同時生成新的access_token並返回。客戶端收到新的access_token,再次請求介面資源。

3.客戶端退出登錄或修改密碼後,調用中間件注銷舊的token(中間件刪除access_token(廢除)),同時清空客戶端側的access_token。

4.以上2 可以增加根據登錄時間判斷最長X時間必須重新登錄,此時則拒絕刷新token。(拒絕的場景:長時間未登錄,頻繁刷新)

5.如手機丟失,可以根據手機號人工廢除指定用戶設備關聯的token。

3.0 變動

1.登錄2.登錄攔截器3.退出登錄4.修改密碼

1.3 場景:token過期重新登錄 長時間未使用需重新登錄

1.登錄成功,後台jwt生成access_token(jwt有效期7天),並緩存到redis,key為 "user_id:access_token",value為access_token(根據用戶id,可以人工廢除指定用戶全部token),設置緩存過期時間為7天,保證最終所有token都能刪除,請求返回後,客戶端緩存此access_token;

2.使用access_token請求介面資源,校驗成功且redis中存在該access_token(未廢除)則調用成功;如果token超時,中間件刪除access_token(廢除),同時生成新的access_token並返回。客戶端收到新的access_token,再次請求介面資源。

3.客戶端退出登錄或修改密碼後,調用中間件注銷舊的token(中間件刪除access_token(廢除)),同時清空客戶端側的access_token。

4.以上2 可以增加根據登錄時間判斷最長X時間必須重新登錄,此時則拒絕刷新token。(拒絕的場景:長時間未登錄,頻繁刷新)

5.如手機丟失,可以根據手機號人工廢除指定用戶設備關聯的token。

1.3 變動

1.登錄2.登錄攔截器3.退出登錄4.修改密碼

2.0 場景: access_token訪問資源 refresh_token授權訪問 設置固定時間X必須重新登錄

1.登錄成功,後台jwt生成access_token(jwt有效期30分鍾)和refresh_token(jwt有效期15天),並緩

存到redis(hash-key為token,sub-key為手機號,value為設備唯一編號(根據手機號碼,可以人工廢除全

部token,也可以根據sub-key,廢除部分設備的token。),設置過期時間為1個月,保證最終所有token都

能刪除),返回後,客戶端緩存此兩種token;

2.使用access_token請求介面資源,校驗成功且redis中存在該access_token(未廢除)則調用成功;如果

token超時,中間件刪除access_token(廢除);客戶端再次攜帶refresh_token調用中間件介面獲取新的

access_token;

3.中間件接受刷新token的請求後,檢查refresh_token是否過期。

如過期,拒絕刷新,刪除refresh_token(廢除); 客戶端收到該狀態後,跳轉到登錄頁;

如未過期,檢查緩存中是否有refresh_token(是否被廢除),如果有,則生成新的access_token並返回給

客戶端,客戶端接著攜帶新的access_token重新調用上面的資源介面。

4.客戶端退出登錄或修改密碼後,調用中間件注銷舊的token(中間件刪除access_token和refresh_token(

廢除)),同時清空客戶端側的access_token和refresh_toke。

5.如手機丟失,可以根據手機號人工廢除指定用戶設備關聯的token。

6.以上3刷新access_token可以增加根據登錄時間判斷最長X時間必須重新登錄,此時則拒絕刷新token。(

拒絕的場景:失效,長時間未登錄,頻繁刷新)

2.0 變動

1.登錄

2.登錄攔截器

3.增加刷新access_token介面

4.退出登錄

5.修改密碼

3.0 場景:自動續期 長時間未使用需重新登錄

1.登錄成功,後台jwt生成access_token(jwt有效期30分鍾),並緩存到redis(hash-key為

access_token,sub-key為手機號,value為設備唯一編號(根據手機號碼,可以人工廢除全部token,也可以

根據sub-key,廢除部分設備的token。),設置access_token過期時間為1個月,保證最終所有token都能刪

除),返回後,客戶端緩存此token;

2.使用access_token請求介面資源,校驗成功且redis中存在該access_token(未廢除)則調用成功;如果

token超時,中間件刪除access_token(廢除),同時生成新的access_token並返回。客戶端收到新的

access_token,

再次請求介面資源。

3.客戶端退出登錄或修改密碼後,調用中間件注銷舊的token(中間件刪除access_token(廢除)),同時清

空客戶端側的access_token。

4.以上2 可以增加根據登錄時間判斷最長X時間必須重新登錄,此時則拒絕刷新token。(拒絕的場景:長

時間未登錄,頻繁刷新)

5.如手機丟失,可以根據手機號人工廢除指定用戶設備關聯的token。

3.0 變動

1.登錄

2.登錄攔截器

3.退出登錄

4.修改密碼

4.0 場景:token過期重新登錄 長時間未使用需重新登錄

1.登錄成功,後台jwt生成access_token(jwt有效期7天),並緩存到redis,key為

"user_id:access_token" + 用戶id,value為access_token(根據用戶id,可以人工廢除指定用戶全部

token),設置緩存過期時間為7天,保證最終所有token都能刪除,請求返回後,客戶端緩存此

access_token;

2.使用access_token請求介面資源,校驗成功且redis中存在該access_token(未廢除)則調用成功;如果

token超時,中間件刪除access_token(廢除),同時生成新的access_token並返回。客戶端收到新的

access_token,

再次請求介面資源。

3.客戶端退出登錄或修改密碼後,調用中間件注銷舊的token(中間件刪除access_token(廢除)),同時清

空客戶端側的access_token。

4.以上2 可以增加根據登錄時間判斷最長X時間必須重新登錄,此時則拒絕刷新token。(拒絕的場景:長

時間未登錄,頻繁刷新)

5.如手機丟失,可以根據手機號人工廢除指定用戶設備關聯的token。

4.0 變動

1.登錄

2.登錄攔截器

3.退出登錄

4.修改密碼

最終實現

後端

3. token是後端還是前端生成的

是伺服器端生成的,做身份驗證用的。

4. 後端如何發送touken

登錄後端之後採取合適的路徑發送。
具體步驟如下:
1、在後端登錄介面中,如果密碼驗證成功,則使用jwt模塊生成token。
2、將token響應給客戶端。
3、客戶端在登錄頁面中,通過then獲取token,再將token設置到localStorage里。
4、每當要發送請求時,就可以通過localStorage來讀取token,放在對伺服器的請求中,使得伺服器能夠驗證並返回用戶數據(路由守衛皆可)。這樣就可以發送了。

5. 服務端tokenid 怎麼生成的

先訪問驗證介面。介面輸出一個根據用戶信息生成的token(內容格式隨意)和uid。然後後邊的每次提交提交token和uid,服務端驗證即可。

6. Php用戶登陸後的token一般怎麼生成的app端

這個需要php後端生成,當登錄成功的時候,後端通過用一些信息通過演算法組合成token,返回給app端,app端接收保存。這個token盡量做成可以還原解析

7. 網頁token在哪裡獲取

token令牌是現在常見的登錄認證方式,一般為後端返回來後對前端數據進行對比,首次登錄時,本地時沒有token的,在登錄成功後後端會返回一段加密的token,從而存儲在前端,當再次登錄或打開時,就會自動發送登錄請求並把本地token一般發送,後端接收到後會被token進行驗證從而實現驗證,獲取到token需要後端返回