最近了解下基於 token 的身份驗證,跟大夥分享下。很多大型**也都在用,比如 facebook,twitter,google+,github 等等,比起傳統的身份驗證方法,token 擴充套件性更強,也更安全點,非常適合用在 web 應用或者移動應用上。token 的中文有人翻譯成 「令牌」,我覺得挺好,意思就是,你拿著這個令牌,才能過一些關卡。
http 是一種沒有狀態的協議,也就是它並不知道是誰是訪問應用。這裡我們把使用者看成是客戶端,客戶端使用使用者名稱還有密碼通過了身份驗證,不過下回這個客戶端再傳送請求時候,還得再驗證一下。
解決的方法就是,當使用者請求登入的時候,如果沒有問題,我們在服務端生成一條記錄,這個記錄裡可以說明一下登入的使用者是誰,然後把這條記錄的 id 號傳送給客戶端,客戶端收到以後把這個 id 號儲存在 cookie 裡,下次這個使用者再向服務端傳送請求的時候,可以帶著這個 cookie ,這樣服務端會驗證乙個這個 cookie 裡的資訊,看看能不能在服務端這裡找到對應的記錄,如果可以,說明使用者已經通過了身份驗證,就把使用者請求的資料返回給客戶端。
上面說的就是 session,我們需要在服務端儲存為登入的使用者生成的 session ,這些 session 可能會儲存在記憶體,磁碟,或者資料庫裡。我們可能需要在服務端定期的去清理過期的 session 。
使用基於 token 的身份驗證方法,在服務端不需要儲存使用者的登入記錄。大概的流程是這樣的:
客戶端使用使用者名稱跟密碼請求登入
服務端收到請求,去驗證使用者名稱與密碼
驗證成功後,服務端會簽發乙個 token,再把這個 token 傳送給客戶端
客戶端收到 token 以後可以把它儲存起來,比如放在 cookie 裡或者 local storage 裡
客戶端每次向服務端請求資源的時候需要帶著服務端簽發的 token
服務端收到請求,然後去驗證客戶端請求裡面帶著的 token,如果驗證成功,就向客戶端返回請求的資料
基於token的身份驗證
token相當於是乙個令牌,在使用者登入的時候由伺服器端生成 基於使用者名稱 時間戳 過期時間 發行者等資訊進行簽名 然後發放給客戶端,客戶端將令牌儲存,在以後需要登入驗證的請求中都需要將令牌傳送到伺服器端進行驗證,如果驗證成功,則返回資料。目前很多大型 都在使用基於token的驗證方式 githu...
cookie和token身份驗證
http cookie 也叫web cookie或瀏覽器cookie 是伺服器傳送到使用者瀏覽器並儲存在本地的一小塊資料,它會在瀏覽器下次向同一伺服器再發起請求時被攜帶併發送到伺服器上。通常,它用於告知服務端兩個請求是否來自同一瀏覽器,如保持使用者的登入狀態。cookie使基於無狀態的http協議記...
基於 Token 的身份驗證方法
使用基於 token 的身份驗證方法,在服務端不需要儲存使用者的登入記錄。大概的流程是這樣的 客戶端使用使用者名稱跟密碼請求登入 服務端收到請求,去驗證使用者名稱與密碼 驗證成功後,服務端會簽發乙個 token,再把這個 token 傳送給客戶端 客戶端收到 token 以後可以把它儲存起來,比如放...