新聞中心
Token流程是什么?怎么解決超時(shí)問題?
首先你要明白token最初的設(shè)計(jì)思路和目的,并不是很多人所謂的用redis存儲(chǔ)什么東西,那樣只是session共享的一種方式,token實(shí)際上是一串字符串,這個(gè)字符串是將登錄信息用特定手段進(jìn)行加密之后,由客戶端存儲(chǔ),并在每次請求中攜帶,用于驗(yàn)證身份的一個(gè)令牌機(jī)制,也就是說這個(gè)字符串本身就包含登錄的信息,并不需要其他的redis之類的機(jī)制來保存其他信息,也就是說他是無狀態(tài)的,有效性的判定標(biāo)準(zhǔn)由后端的特定邏輯來確定的,而token在第一次登錄之后,由后端計(jì)算完成,并發(fā)送至客戶端并存儲(chǔ),對于客戶端來說,之后的每次路由跳轉(zhuǎn),網(wǎng)絡(luò)請求,都需要攜帶這個(gè)token,用來告訴路由守衛(wèi)也好,服務(wù)提供者也好,我當(dāng)前是誰在操作,這個(gè)操作是不是被允許,僅此而已,如果需要當(dāng)前登錄用戶的詳細(xì)信息,可以在登陸的時(shí)候存到類似vuex等狀態(tài)保持機(jī)制中去,隨用隨取,所以這種機(jī)制下,redis完全沒有用處。

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),代縣企業(yè)網(wǎng)站建設(shè),代縣品牌網(wǎng)站建設(shè),網(wǎng)站定制,代縣網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,代縣網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
Token
Token是服務(wù)端生成的一串字符串,可以看做客戶端進(jìn)行請求的一個(gè)令牌,客戶端在請求網(wǎng)絡(luò)上某些資源的時(shí)候,必須帶著這塊令牌(通行證)。
當(dāng)客戶端第一次訪問服務(wù)端,服務(wù)端會(huì)根據(jù)傳過來的唯一標(biāo)識(shí)userId,運(yùn)用一些加密算法,生成一個(gè)Token,客戶端下次請求時(shí),只需要帶上Token,服務(wù)器收到請求后,會(huì)驗(yàn)證這個(gè)Token。
有些公司會(huì)建設(shè)統(tǒng)一登錄系統(tǒng)(單點(diǎn)登錄),客戶端先去這個(gè)系統(tǒng)獲取Token,驗(yàn)證通過再拿著這些Token去訪問其他系統(tǒng);API Gateway也可以提供類似的功能,我們公司就是這樣,客戶端接入的時(shí)候,先向網(wǎng)關(guān)獲取Token,驗(yàn)證通過了才能訪問被授權(quán)的接口,并且一段時(shí)間后要重新或者Token。
客戶端使用用戶名、密碼做身份驗(yàn)證;
服務(wù)端收到請求后進(jìn)行身份驗(yàn)證;(也可能是統(tǒng)一登錄平臺(tái)、網(wǎng)關(guān))
驗(yàn)證成功后,服務(wù)端會(huì)簽發(fā)一個(gè)Token返回給客戶端;
客戶端收到Token以后可以把它存儲(chǔ)起來;每次向服務(wù)端發(fā)送請求的時(shí)候,都要帶著Token;
Token會(huì)有過期時(shí)間,過期后需要重新進(jìn)行驗(yàn)證;
token并不是什么流程,而是一種認(rèn)證技術(shù),是為了解決后端有狀態(tài)的服務(wù)而出現(xiàn)的。token的原理是把相關(guān)認(rèn)證進(jìn)行編碼并進(jìn)行簽名后生成一串字符,這個(gè)字符串在每一次交互中都攜帶,服務(wù)器從這個(gè)串中獲取認(rèn)證信息。因此,從這個(gè)角度而言,token并沒有超時(shí)不超時(shí)的問題。但為安全計(jì),會(huì)在token負(fù)載中人為的加入有效時(shí)間,規(guī)定在有效時(shí)間內(nèi)該token有效,這個(gè)有效時(shí)間就是通俗理解的超時(shí)時(shí)間了。
對于編程初學(xué)者來說,幾乎總是弄不清Token和Session的區(qū)別,也并不了解為何要用Token或者Session,尤其是對目前只學(xué)過單頁開發(fā)的人員來說,Session完全可以說是過去時(shí)了。
簡單點(diǎn)說Token就是服務(wù)器端生產(chǎn)了一串字符串令牌,而且返回給客戶端進(jìn)行存儲(chǔ),在下一次請求時(shí)將這串令牌放在請求頭Header上,就無需每次在帶上用戶名和密碼進(jìn)行校驗(yàn),這樣就可以減少對數(shù)據(jù)庫的查詢操作,減輕服務(wù)器的壓力。
在Token未興起之時(shí),其實(shí)大部分都是采用的Session機(jī)制,有服務(wù)器端保有Session會(huì)話對象,客戶端則是需要通過Cookie中的SessionId回傳到服務(wù)器來判斷當(dāng)前會(huì)話是否存在,若存在則是已登錄,若不存在則是失效未登錄!這也是Token與Session的區(qū)別!當(dāng)然了Session機(jī)制一般要求前端代碼與后端代碼放在同一域名服務(wù)器下,雖然目前有很多跨服務(wù)器Session同步,但是那個(gè)就比較麻煩了。
而Token則是完全滿足了目前前后端分離的需求,更是可以實(shí)現(xiàn)前端和后端項(xiàng)目的分別負(fù)載均衡。那么如何解決Token超時(shí)過期問題呢?這兒就需要對Token的時(shí)間進(jìn)行存儲(chǔ)并更新,也就是保留用戶最后一次請求服務(wù)器的時(shí)間,然后下一次請求與該時(shí)間進(jìn)行比對校驗(yàn),若間隔大于自己設(shè)置的超時(shí)期限,那么就是過期超時(shí)退出,那么如何在自己設(shè)置的間隔范圍之內(nèi),那么該Token有效時(shí)間就順延下去,以此類推,這樣就可以完成對應(yīng)Token的超時(shí)過期問題。
以上就是我的回答,也是目前我在項(xiàng)目中進(jìn)行使用的解決辦法,希望能夠?qū)δ阌兴鶐椭徒獯?,我?strong>路飛寫代碼,歡迎關(guān)注我,一起分享知識(shí)!
到此,以上就是小編對于刷新redis時(shí)間怎么設(shè)置的的問題就介紹到這了,希望這1點(diǎn)解答對大家有用。
新聞標(biāo)題:Token流程是什么?怎么解決超時(shí)問題?(刷新redis時(shí)間怎么設(shè)置)
文章地址:http://m.fisionsoft.com.cn/article/dpcgiio.html


咨詢
建站咨詢
