日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

cookie與session的區(qū)別,session和cookie的區(qū)別( 三 )


基于Token 的身份驗(yàn)證例如,張三已經(jīng)登錄了系統(tǒng),服務(wù)端給他發(fā)一個(gè)令牌(Token),里邊包含了張三的 user id,后續(xù)張三再次通過 Http 請(qǐng)求訪問服務(wù)器的時(shí)候,把這個(gè) Token 通過 Http header 帶過來不就可以了 。服務(wù)端只需要驗(yàn)證 Token是自己生成的,而非偽造的 。
假如不驗(yàn)證任何人都可以偽造,那么這個(gè)令牌(token)和 session id沒有本質(zhì)區(qū)別,如何讓別人偽造不了?那就對(duì)數(shù)據(jù)做一個(gè)簽名(Sign)吧,比如說服務(wù)端用 HMAC-SHA256 加密算法,再加上一個(gè)只有服務(wù)端才知道的密鑰,對(duì)數(shù)據(jù)做一個(gè)簽名,把這個(gè)簽名和數(shù)據(jù)一起作為 Token 發(fā)給客戶端,客戶端收到 Token 以后可以把它存儲(chǔ)起來,比如存儲(chǔ)在 Cookie(存儲(chǔ)在瀏覽器目錄中的文本文件)中,由于密鑰除了服務(wù)端任何其他用戶都不知道,就無法偽造令牌(Token) 。
這樣一來,服務(wù)端就可以不保存 Token 了,當(dāng)張三把這個(gè)Token發(fā)給服務(wù)端時(shí),服務(wù)端使用相同的HMAC-SHA256 算法和密鑰,對(duì)數(shù)據(jù)再計(jì)算一次簽名,與 Token 中的簽名做個(gè)比較,如果兩者相同,說明張三已經(jīng)登錄過了,即驗(yàn)證成功 。若不相同,那么說明這個(gè)請(qǐng)求是偽造的 。這樣一來,服務(wù)端只需要生成 Token,而不需要保存Token,只是驗(yàn)證Token就好了,也就實(shí)現(xiàn)了時(shí)間換取空間(CPU計(jì)算時(shí)間換取Session 存儲(chǔ)空間) 。
Token是什么?和session、cookie相比,使用場景有什么區(qū)別?
在Web開發(fā)領(lǐng)域,相信大家對(duì)于Cookie和Session都很熟悉,Cookie和Session都是會(huì)話保持技術(shù)的解決方案 。隨著技術(shù)的發(fā)展,Token機(jī)制出現(xiàn)在我們面前,不過很多開發(fā)者對(duì)于Token和Cookie、Session的區(qū)別及使用場景分辨不清 。Cookie和Session的用途要知道我們?cè)L問網(wǎng)站都是通過HTTP協(xié)議或HTTPS協(xié)議來完成的,HTTP協(xié)議它本身是無狀態(tài)的協(xié)議(即:服務(wù)器無法分辨哪些請(qǐng)求是來源于同個(gè)客戶) 。
而業(yè)務(wù)層面會(huì)涉及到客戶端與服務(wù)器端的交互(同網(wǎng)站下多個(gè)頁面間能共享數(shù)據(jù)),此時(shí)服務(wù)器端必須要保持會(huì)話狀態(tài),這樣才能進(jìn)行用戶身份的鑒別 。由于HTTP無狀態(tài)的特性,如果要實(shí)話客戶端和服務(wù)器端的會(huì)話保持,那就需要其它機(jī)制來實(shí)現(xiàn),于是Cookie和Session應(yīng)運(yùn)而生 。通常情況下,Session和Cookie是搭配在一起使用的 。
Token是什么上面說到的Session和Cookie機(jī)制來保持會(huì)話,會(huì)存在一個(gè)問題:客戶端瀏覽器只要保存自己的SessionID即可,而服務(wù)器卻要保存所有用戶的Session信息,這對(duì)于服務(wù)器來說開銷較大,而且不利用服務(wù)器的擴(kuò)展(比如服務(wù)器集群時(shí),Session如何同步存儲(chǔ)就是個(gè)問題)!于是有人思考,如果把Session信息讓客戶端來保管而且無法偽造不就可以解決這個(gè)問題了?進(jìn)而有了Token機(jī)制 。
Token俗稱為“令牌”,它的構(gòu)成是:uid:用戶唯一身份標(biāo)識(shí)timestamp:當(dāng)前時(shí)間戳sign:簽名字符串,防止第三方偽造數(shù)據(jù);簽名密鑰是存儲(chǔ)在服務(wù)器端的,其它人無法知道其它附加參數(shù) 。Token機(jī)制下的認(rèn)證流程Token機(jī)制其實(shí)和Cookie機(jī)制極其相似,主要有以下流程:1、用戶登錄進(jìn)行身份認(rèn)證,認(rèn)證成功后服務(wù)器端生成Token返回給客戶端;2、客戶端接收到Token后保存在客戶端(可保存在Cookie、LocalStorage、SessionStorage中);3、客戶端再次請(qǐng)求服務(wù)器端時(shí),將Token作為請(qǐng)求頭放入Headers中;4、服務(wù)器端接收請(qǐng)求頭中的Token,將用戶參數(shù)按照既定規(guī)則再進(jìn)行一次簽名,兩次簽名若一致則認(rèn)為成功,反之?dāng)?shù)據(jù)存在篡改請(qǐng)求失敗 。
【cookie與session的區(qū)別,session和cookie的區(qū)別】(生成簽名示例圖)(驗(yàn)證簽名示例圖)Token與Cookie Session的區(qū)別Cookie其實(shí)也充當(dāng)?shù)氖橇钆谱饔?,但它是“有狀態(tài)”的;而Token令牌是無狀態(tài)的,更利于分布式部署 。以上就是我的觀點(diǎn),對(duì)于這個(gè)問題大家是怎么看待的呢?歡迎在下方評(píng)論區(qū)交流 ~ 我是科技領(lǐng)域創(chuàng)作者,十年互聯(lián)網(wǎng)從業(yè)經(jīng)驗(yàn),歡迎關(guān)注我了解更多科技知識(shí)!。

推薦閱讀