token相當於是乙個令牌,在使用者登入的時候由伺服器端生成(基於使用者名稱、時間戳、過期時間、發行者等資訊進行簽名),然後發放給客戶端,客戶端將令牌儲存,在以後需要登入驗證的請求中都需要將令牌傳送到伺服器端進行驗證,如果驗證成功,則返回資料。目前很多大型**都在使用基於token的驗證方式:github,facebook,twitter…
從伺服器端的角度來講,傳統的登入方式下,伺服器端需要為登入的使用者生成乙個session,會占用伺服器的資源;然而在token的驗證方式下,伺服器端不需要為登入的使用者維護乙個session來進行通訊驗證,只需要在登入時生成乙個token資訊,在請求時驗證token的有效性即可。
從跨域開發的角度來講,由於瀏覽器的安全機制,在跨域環境下,cookie的傳輸並不是很方便,同時牽扯到安全問題;然而我們可以通過將token存放在localstorage中,每次傳送請求的時候從localstorage中獲取傳送給伺服器端。
大致流程
客戶端使用使用者名稱密碼登入。
服務端收到請求,去驗證使用者名稱與密碼。驗證成功後,服務端會簽發乙個 token,把這個 token 傳送給客戶端。
客戶端將收到的token儲存起來。(cookie或者localstorage)
客戶端每次需要登入驗證的請求都需要帶著token傳送給伺服器端。
伺服器端收到請求後先驗證token,如果成功,返回資料。
前端**
在login之後,伺服器返回簽發的token資訊,我們需要將token進行儲存在本地。
登入成功之後的token資訊
localstorage.setitem('token', data.data.token);
1
每一次傳送請求都要從本地獲取token進行傳送:
function gettoken()
return null;//如果獲取不到token就傳送null給伺服器端
}
123
4567
如果伺服器返回401,則表示token已過期,需要重新跳轉登入。
function handletokenfailed(code),1000)
}
}
123
4567
8910前端檢查登入: 在一些不必要傳送請求給後端驗證登入的情況下,可以通過前端檢查登入的方式來攔截一些未登入的情況,這樣可以減輕伺服器的壓力
function checklogin()12
3這樣,整個對於前端token驗證的流程就完成了。
基於 Token 的身份驗證方法
使用基於 token 的身份驗證方法,在服務端不需要儲存使用者的登入記錄。大概的流程是這樣的 客戶端使用使用者名稱跟密碼請求登入 服務端收到請求,去驗證使用者名稱與密碼 驗證成功後,服務端會簽發乙個 token,再把這個 token 傳送給客戶端 客戶端收到 token 以後可以把它儲存起來,比如放...
基於Token的身份驗證 JWT
原文 基於token的身份驗證 jwt 初次了解jwt,很基礎,高手勿噴。基於token的身份驗證用來替代傳統的cookie session身份驗證方法中的session。jwt就是乙個字串,經過加密處理與校驗處理的字串,形式為 a.b.c a由jwt頭部資訊header加密得到 b由jwt用到的身...
基於Token的身份驗證 JWT
初次了解jwt,很基礎,高手勿噴。基於token的身份驗證用來替代傳統的cookie session身份驗證方法中的session。jwt就是乙個字串,經過加密處理與校驗處理的字串,形式為 a.b.c a由jwt頭部資訊header加密得到 b由jwt用到的身份驗證資訊json資料加密得到 c由a和...