簡單理解token機制 token是什么意思

令牌是什么意思(簡單理解令牌機制)
【簡單理解token機制 token是什么意思】在簡單了解cookie/會話機制的文章中,簡要闡述了cookie和會話的原理 。本文將簡要解釋另一個與cookie/session同樣重要的技術術語:token 。

什么是tokenToken的意思是“令牌”,它是由服務器生成的字符串,用作客戶端請求的標識符 。
當用戶第一次登錄時,服務器生成一個令牌并將其返回給客戶端 。將來,客戶端只需要攜帶這個令牌來請求數據,而不必再次攜帶用戶名和密碼 。
簡單令牌的組成;Uid(用戶的唯一身份)、time(當前時間的時間戳)和sign(簽名的前幾個數字,token)通過哈希算法壓縮成一定長度的十六進制字符串 。以防止令牌泄漏) 。
身份認證概述因為HTTP是無狀態協議,所以它不知道誰訪問了我們的應用程序 。在這里,用戶被視為客戶端,并且客戶端已經通過了用戶名和密碼的身份驗證,但是下次該客戶端發送請求時,必須再次進行驗證 。
一般的解決方法是,當用戶請求登錄時,如果沒有問題,就會在服務器上生成一條記錄,記錄中可以描述登錄的用戶,然后將這條記錄的id發送給客戶端,客戶端收到后會將這個id存儲在cookie中,下次用戶再次向服務器發送請求時,可以將這個cookie隨身攜帶,這樣服務器就會驗證cookie中的信息 ??纯茨懿荒茉诜掌魃险业綄挠涗?。如果是,則表示用戶通過了認證,然后用戶請求的數據返回給客戶端 。
上面描述的過程是使用session,該id值是sessionid 。我們需要將為用戶生成的會話存儲在服務器中 。這些會話將存儲在內存、磁盤或數據庫中 。
基于token機制的身份認證使用令牌機制的身份驗證方法不需要在服務器端存儲用戶的登錄記錄 。大致過程:
使用客戶端用戶名和密碼請求登錄 。
服務器接收請求并驗證用戶名和密碼 。
驗證成功后,服務器將生成一個令牌,然后將其發送給客戶端 。
接收到令牌后,客戶端存儲它,它可以放在cookie或本地存儲中 。
每次客戶端向服務器發送請求時,都需要攜帶服務器發送的令牌 。
服務器接收請求,然后驗證客戶端請求是否攜帶令牌 。如果驗證成功,它會將請求的數據返回給客戶端 。
使用令牌機制進行登錄身份驗證有以下幾種方式:
A.使用設備的mac地址作為令牌
客戶端:客戶端在登錄時獲取設備的mac地址,并將其作為參數傳遞給服務器 。
服務器:接收到這個參數后,服務器使用一個變量來接收它,將它作為令牌保存在數據庫中,并將令牌設置到會話中 。每次客戶端請求時,都必須統一攔截,客戶端傳遞的令牌與服務器會話中的令牌進行比較 。如果令牌相同,則登錄成功,如果令牌不同,則拒絕登錄 。
這樣,客戶端和服務器統一了唯一標識,保證了每臺設備都有唯一標識 。缺點是服務器需要保存mac地址;優點是客戶端不需要重新登錄,但是登錄一次就可以一直使用,超時的問題由服務器處理 。
B.使用sessionid作為標記
客戶端:客戶端使用用戶名和密碼登錄 。
服務器:收到用戶名和密碼后,檢查 。如果正確,本地獲取的sessionid將作為令牌返回給客戶端 ??蛻舳酥恍枰趯韼碚埱蟮臄祿?。
這種方法的優點是方便,不需要存儲數據 。缺點是當會話到期時,客戶端必須再次登錄才能請求數據 。
當然,對于一些保密性較高的應用,設備的mac地址和用戶名、密碼可以通過兩種方式結合使用作為認證的令牌 。
APP利用token機制進行身份認證當用戶登錄APP時,APP會將加密后的用戶名和密碼發送給服務器,服務器會對用戶名和密碼進行驗證 。如果驗證成功,它將生成相應數量的字符作為令牌存儲在服務器中,并將令牌返回給APP 。
當應用程序將來再次請求時,令牌應該隨身攜帶,無論它需要驗證到哪里 。然后,服務器驗證令牌,成功返回所需結果,如果失敗,則返回錯誤消息,以便用戶可以再次登錄 。其中,服務器會為令牌設置一個到期日期,每次APP請求時都會驗證令牌和到期日期 。
token的存儲Token可以存儲在數據庫中,但是查詢token可能會花費太長時間,可能會導致token丟失(實際上,如果token丟失了,重新認證一個就好,但是不要太頻繁地丟失,如果什么都沒發生,也不要讓用戶認證) 。
為了避免查詢時間過長,可以將token放入內存 。這樣的話,查詢速度絕對不是問題,也不用太擔心占用內存 。即使令牌是32位字符串,應用程序中的用戶數也是一百萬或者一千萬,占用的內存也不多 。

推薦閱讀