postman cookie设置_接口鉴权之cookie,session和token
什么是接口鑒權(quán)?
鑒權(quán)就是鑒定權(quán)限。在公司開發(fā)的一些系統(tǒng)中都會(huì)有權(quán)限的鑒定。不管是app還是網(wǎng)站的項(xiàng)目,都會(huì)有登錄模塊,而只要有登錄模塊,他有一些功能,肯定是必須要登錄之后才能完成了。比如你在淘寶下單的時(shí)候,肯定是要登錄的。你每次去做下單的時(shí)候,他其實(shí)每一次都會(huì)去檢測(cè)你這個(gè)用戶的信息,是否有效的。所以鑒權(quán)是接口每次被調(diào)用的時(shí)候,都需要做一個(gè)事情。而我們需要寫一些代碼或者是通過一些工具,postman或者是jmeter做一些設(shè)置去完成鑒權(quán)。利用鑒權(quán)的特點(diǎn),把他需要的東西傳給他,從而模擬鑒權(quán)。
現(xiàn)在主流的就有兩種技術(shù)一種是session,一種是token。
而現(xiàn)在大部分都采用token。不過小部分采用session。在這兩個(gè)技術(shù)里面呢,他都可能會(huì)用到cookie這個(gè)技術(shù)。可以理解為cookie為他們兩種技術(shù)的基礎(chǔ)。
為什么會(huì)有cookie還有session還有token這種技術(shù)的存在?
這些技術(shù)其實(shí)都是http協(xié)議下的一種技術(shù)。http協(xié)議是一種無狀態(tài)協(xié)議,就是說我的本次請(qǐng)求和上一次請(qǐng)求是沒有任何關(guān)聯(lián)的,無法去共享信息。舉一個(gè)場(chǎng)景,我們用什么愛奇藝或者qq視頻追劇的時(shí)候,比方說這個(gè)劇追到第十集了,那你下次在打開的時(shí)候你的愛奇藝肯定會(huì)告訴你,你上次看到的歷史記錄問你是不是要繼續(xù)從第10集去看。那這種稱之為有狀態(tài),也就是說他會(huì)把客戶端上一次做的事情把它記錄下來。那么無狀態(tài)是這一次看到第10集了,下次進(jìn)來了還是從第1集開始,就不會(huì)記錄你的任何信息。就是說如果一個(gè)視頻網(wǎng)站能夠記錄你觀看到第幾集,你可以理解為這種形式就是有狀態(tài)的。那如果不能記住,他就是無狀態(tài)。重點(diǎn)是服務(wù)器要花時(shí)間去幫你處理這個(gè)信息,因?yàn)橛涗浀臅r(shí)候服務(wù)器會(huì)記住你這個(gè)用戶的歷史記錄。因?yàn)橛?00個(gè)人可能同時(shí)追這個(gè)劇。那服務(wù)器就要記住100份。所以http協(xié)議在研發(fā)初期,就把它定義成無狀態(tài)的。這樣效率會(huì)高很多。隨著這個(gè)互聯(lián)網(wǎng)的發(fā)展,對(duì)于有狀態(tài)的需求就比較大了。所以會(huì)引入一些技術(shù)去解決。公司里面研發(fā)的產(chǎn)品也好,還是我們平常用到的這些應(yīng)用,大部分都是http協(xié)議的。比如說你的淘寶,京東啊,都是http協(xié)議。只不過有些會(huì)以加密的形式-https,但底層仍是http。京東淘寶要收集你的瀏覽記錄,百度貼吧登錄之后去發(fā)貼,里面也會(huì)有你瀏覽帖子的記錄。那這些東西,其實(shí)都是由這三個(gè)技術(shù)實(shí)現(xiàn)。那么在這里面cookie是最簡(jiǎn)單也是最方便的一種技術(shù)啊。
cookie是什么呢?
隨便打開一個(gè)網(wǎng)站f12進(jìn)入檢查,谷歌是右鍵檢查,在application這里面可以看到這個(gè)cookie。
在這些存儲(chǔ)信息上面那些都是最近幾年h5之后才出來的技術(shù),之前瀏覽器只能存儲(chǔ)cookie, cookie的圖標(biāo)是一個(gè)小餅干。打開看一下。
每個(gè)域名有不同的cookie,每一個(gè)網(wǎng)站都會(huì)有自己的cookie。Name是cookie的名字,value是cookie的值,Expires/Max-age是cookie的失效時(shí)間,N/A是無設(shè)置。cookie其實(shí)就是一個(gè)文件,存著以上數(shù)據(jù)。
cookie存這些數(shù)據(jù)在本地有什么用呢?
舉一個(gè)很簡(jiǎn)單的例子,再在使用京東或者淘寶的時(shí)候。你并沒有登錄但是你的用戶名字會(huì)顯示在瀏覽器右上角,但是當(dāng)你要下單的時(shí)候,他會(huì)提示你要重新登陸。像這樣用戶名之類的非敏感數(shù)據(jù)就存在cookie里面。金額或者密碼不能存,因?yàn)樗苯泳痛嬖谝粋€(gè)值。
cookie的優(yōu)點(diǎn)是什么呢?
優(yōu)點(diǎn)就是非常輕便,非常小。你把它存進(jìn)來之后對(duì)于服務(wù)端是沒有任何壓力的,因?yàn)槭谴嬖谀愕臑g覽器里面。也可以設(shè)置失效時(shí)間,生效時(shí)間之類的。
那么session是什么呢?
Session就涉及到鑒權(quán)了。Session需要跟服務(wù)端交互才會(huì)產(chǎn)生。它從稱之為會(huì)話。
客戶端指的就是瀏覽器,我們?cè)跒g覽器輸入用戶名和密碼,你就把這個(gè)信息傳到服務(wù)器,如果驗(yàn)證通過,就會(huì)生成一個(gè)sessionId。sessionId存在服務(wù)器里面。服務(wù)端再將sessionId通過cookie回寫到客戶端。回寫成功后,下一次訪問服務(wù)器的時(shí)候就不必再使用密碼登錄。
所以cookie這個(gè)技術(shù)是由后臺(tái)去生成的,取決于這個(gè)后臺(tái)用的語(yǔ)言,不同語(yǔ)言的實(shí)現(xiàn)邏輯是一樣的。回寫之后每一次請(qǐng)求cookie都自動(dòng)攜帶了。
Cookie和session的區(qū)別是什么?
客戶端和服務(wù)端都能生成cookie,它用來存放一些不敏感的數(shù)據(jù),數(shù)據(jù)類型只能是字符串(json).除了服務(wù)端之外,服務(wù)端生成session,客戶端是不能生成session的。Session的信息是存放在服務(wù)端的,可以存放任意數(shù)據(jù),java中session中可以存放任何數(shù)據(jù)類型。
Token技術(shù)的功能是什么?
token主要是解決session的性能問題。客戶端登錄成功之后session存在內(nèi)存。一臺(tái)服務(wù)器的內(nèi)存也就那么大,內(nèi)存總有一天會(huì)占滿,而你內(nèi)存越來越滿,服務(wù)器的性能就越低。那怎么去解決的呢?就是這個(gè)token。
用戶名和密碼去請(qǐng)求,完成之后會(huì)形成token,但是token不存儲(chǔ)在服務(wù)器,隨后直接把token返回給客戶端。一個(gè)token分為三個(gè)部分,第一部分是Header,第二部分是用戶相關(guān)信息,第三個(gè)部分是簽名,相當(dāng)于一把鎖,前兩個(gè)部分通過HMAC-SHA256算法生成一把鑰匙(密鑰)。
我們只需要判斷鑰匙和鎖是否匹配即可,但是我們不會(huì)直接拿密鑰和簽名對(duì)比,而是重新計(jì)算出一個(gè)簽名(鎖),比較兩把鎖是否相同。數(shù)據(jù)(Header,用戶信息)是一致的,算法也沒有變化,結(jié)果就不會(huì)變,如果數(shù)據(jù)變化(被篡改)就不會(huì)驗(yàn)證通過。
Token和session的區(qū)別:
Token其實(shí)也是一個(gè)字符串,它最大的一個(gè)特點(diǎn)就是不會(huì)存在服務(wù)端,還有一個(gè)特點(diǎn)就是不再依賴于cookie的形式,它可以是請(qǐng)求頭或者是請(qǐng)求體的方式,也就是Session依賴于cookie,由服務(wù)器生成,存儲(chǔ),驗(yàn)證,以cookie的方式存在于客戶端,客戶端以同樣方式發(fā)送給服務(wù)端,session有狀態(tài)。
怎么使用token或者session做鑒權(quán)做鑒權(quán)?
1登陸之后,獲取session或者token字符串,將它們攜帶回客戶端。
2請(qǐng)求需要鑒權(quán)的接口時(shí),攜帶對(duì)應(yīng)的session和token。
總結(jié)
以上是生活随笔為你收集整理的postman cookie设置_接口鉴权之cookie,session和token的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 爬虫技术python nutch_pyt
- 下一篇: seo从入门到精通_SEO入门到精通(七