關於面試所提問的token

2021-10-03 20:27:15 字數 1094 閱讀 5233

什麼是token?

token的意思是「令牌」,是服務端生成的一串字串,作為客戶端進行請求的乙個標識。

當使用者第一次登入後,伺服器生成乙個token並將此token返回給客戶端,以後客戶端只需帶上這個token前來請求資料即可,無需再次帶上使用者名稱和密碼。

簡單token的組成;uid(使用者唯一的身份標識)、time(當前時間的時間戳)、sign(簽名,token的前幾位以雜湊演算法壓縮成的一定長度的十六進製制字串。為防止token洩露)。

為什麼要用token?

token 完全由應用管理,所以它可以避開同源策略

token 可以避免 csrf 攻擊

token 可以是無狀態的,可以在多個服務間共享

基於token機制的身份認證

使用token機制的身份驗證方法,在伺服器端不需要儲存使用者的登入記錄。大概的流程:

客戶端使用使用者名稱和密碼請求登入。

服務端收到請求,驗證使用者名稱和密碼。

驗證成功後,服務端會生成乙個token,然後把這個token傳送給客戶端。

客戶端收到token後把它儲存起來,可以放在cookie或者local storage(本地儲存)裡。

客戶端每次向服務端傳送請求的時候都需要帶上服務端發給的token。

服務端收到請求,然後去驗證客戶端請求裡面帶著token,如果驗證成功,就向客戶端返回請求的資料。(如果這個 token 在服務端持久化(比如存入資料庫),那它就是乙個永久的身份令牌。)

token需要設定有效期嗎?

對於這個問題,我們不妨先看兩個例子。乙個例子是登入密碼,一般要求定期改變密碼,以防止洩漏,所以密碼是有有效期的;另乙個例子是安全證書。ssl 安全證書都有有效期,目的是為了解決吊銷的問題。所以無論是從安全的角度考慮,還是從吊銷的角度考慮,token 都需要設有效期。

那麼有效期多長合適呢?

只能說,根據系統的安全需要,盡可能的短,但也不能短得離譜——想像一下手機的自動熄屏時間,如果設定為 10 秒鐘無操作自動熄屏,再次點亮需要輸入密碼,會不會瘋?

然後新問題產生了,如果使用者在正常操作的過程中,token 過期失效了,要求使用者重新登入……使用者體驗豈不是很糟糕?

解決token失效的問題

對張量奇學長所提問題的解答

1 單精度浮點數的定義 float adf 0.2 為什麼會警告?因為0.2預設是雙精度,所以添上f即可,float adf 0.2f 2 int和long int有多少位?include int main 我的輸出是4,4 3 怎樣正確的比較float型變數和0的大小?float型變數和 零值 比...

關於token的理解

什麼是token token的意思是 令牌 是服務端生成的一串字串,作為客戶端進行請求的乙個標識。當使用者第一次登入後,伺服器生成乙個token並將此token返回給客戶端,以後客戶端只需帶上這個token前來請求資料即可,無需再次帶上使用者名稱和密碼。簡單token的組成 uid 使用者唯一的身份...

關於《提問智慧型》的筆記

技術問題的解答很大程度上取決於你提問的方式與解決此問題的難度 嘗試在你準備提問論壇的歷史文件中搜尋答案 嘗試搜尋網際網路以找到答案 嘗試閱讀手冊以找到答案 嘗試閱讀 常見問題文件 faq 以找到答案 嘗試自己檢查或試驗以找到答案 嘗試請教懂行的朋友以找到答案 如果你是程式設計師,嘗試閱讀源 以找到答...