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