引用文章寫在前面,表示感謝:
http://www.woshipm.com/pd/877760.html
什麼是token
token的意思是令牌,想象一下用過的qq令牌,是來自(騰訊)服務端生成的一串字符,作爲客戶端(我們自己)進行請求的一個標識。比如說:改qq密碼。而這裏我們是自己開發App,我們的用戶用token請求登錄,我們對他進行身份認證。
當用戶第一次登錄後,服務端生成一個token給用戶,用戶下次帶着token請求幹這幹那就行,不需要再帶密碼。想象一下qq、微信每次打開都自動登錄了,就是這樣。
基於token機制的身份認證
流程你先自己想一下:大概是某人第一次或往後每次重新登錄,給某人一個token令牌,你保管好,下次帶上令牌出入城門。
流程:
- 客戶端使用用戶名和密碼請求登錄。
- 服務端收到請求,驗證用戶名和密碼。服務端收到請求,驗證用戶名和密碼。
- 驗證成功後,服務端會生成一個token,然後把這個token發送給客戶端。驗證成功後,服務端會生成一個token,然後把這個token發送給客戶端。
- 客戶端收到token後把它存儲起來,可以放在cookie或者Local Storage(本地存儲)裏。客戶端收到token後把它存儲起來,可以放在cookie或者Local Storage(本地存儲)裏。
- 客戶端每次向服務端發送請求的時候都需要帶上服務端發給的token。客戶端每次向服務端發送請求的時候都需要帶上服務端發給的token。
- 服務端收到請求,然後去驗證客戶端請求裏面帶着token,如果驗證成功,就向客戶端返回請求的數據。服務端收到請求,然後去驗證客戶端請求裏面帶着token,如果驗證成功,就向客戶端返回請求的數據。
以上是token機制的理解,下面重點講APP開發如何利用token機制進行身份認證
用戶在登錄APP時,APP端會發送加密的用戶名和密碼到服務器,服務器驗證用戶名和密碼,如果驗證成功,就會生成相應位數的字符產作爲token存儲到服務器中,並且將該token返回給APP端。
以後APP再次請求時,凡是需要驗證的地方都要帶上該token,然後服務器端驗證token,成功返回所需要的結果,失敗返回錯誤信息,讓用戶重新登錄。其中,服務器上會給token設置一個有效期,每次APP請求的時候都驗證token和有效期。
這段描述的挺好的,大體思路就是這樣,實際操作的時候略有不同,代碼總可以自由發揮嘛。
(代碼整理後補發)