vue从url中获取token并加入到 请求头里_BATJ都会用到的接口鉴权cookie、session 和token...
鑒權(quán)
鑒權(quán)是指驗(yàn)證用戶是否擁有訪問系統(tǒng)的權(quán)利—鑒定權(quán)限。
cookie、session和token
為什么會(huì)有cookie、session和token?
1、 http是無狀態(tài)協(xié)議
什么是無狀態(tài)呢?
答:當(dāng)前請(qǐng)求和上一次或者下一次請(qǐng)求是沒有任何關(guān)系的,好處是速度快,壞處是無法共享信息。
2、 互聯(lián)網(wǎng)的興起
以前的網(wǎng)站,基本用來查看些文件或者圖片,作為服務(wù)器不需要記錄誰來放訪問了什么文件,每次來一個(gè)新的HTTP請(qǐng)求, 給予響應(yīng)即可。
但隨著互聯(lián)網(wǎng)的飛速發(fā)展, http無狀態(tài)的缺點(diǎn)被放大。
各種各樣的交互網(wǎng)站,必須登錄后才能進(jìn)行一些操作,比如發(fā)帖需要記錄發(fā)帖人、瀏覽記錄等,不同賬號(hào)訪問的信息必須獨(dú)立存儲(chǔ)。
3、 cookie、session的加入
我們不能修改HTTP協(xié)議(無狀態(tài)),那么要解決共享信息的問題必須用其他的手段。
于是就有了會(huì)話ID(session id),服務(wù)器為每個(gè)用戶生成一個(gè)不一樣的隨機(jī)字符串(session id),一份存在服務(wù)器,一份以cookie的形式寫給瀏覽器。
瀏覽器每次向服務(wù)器發(fā)起HTTP請(qǐng)求時(shí),攜帶這個(gè)字符串(session id)回傳給服務(wù)器,這樣就能區(qū)分誰是誰了。
4、 session有啥缺點(diǎn)呢?
雖然session解決了共享信息的問題,但同時(shí)對(duì)服務(wù)器帶來了其他問題—資源開銷(內(nèi)存、cpu)。
對(duì)于瀏覽器來說sessionid是非常好用的,只需要在cookie中存一個(gè)字符串就行了,但是服務(wù)器必須存儲(chǔ)所有在線的用戶sessionid,那么同時(shí)在線的人數(shù)越多開銷越大,嚴(yán)重影響了服務(wù)器的性能。
這時(shí)可以選擇去擴(kuò)展服務(wù)器做集群,但同時(shí)也出現(xiàn)分布式sessionid問題,那么可以采用session粘滯或者session集中式管理(redis)來解決。
5、 擺脫session,擁抱token
上述的解決方案都是圍繞session,那么能不能不用sessionid來解決呢?
如果不適用sessionid,如何確保數(shù)據(jù)是服務(wù)器生成的呢?怎么去驗(yàn)證呢?用戶信息存在哪?
于是有人想到了自己按照一定規(guī)則生成加密字符串,服務(wù)器只驗(yàn)證不存儲(chǔ),只要驗(yàn)證通過說明是自己生成的,用戶信息存儲(chǔ)在加密字符串中,這樣性能、CORS(跨域資源共享)都能解決,而這個(gè)加密字符串就是token。
cookie、session的區(qū)別
cookie:客戶端和服務(wù)端都能創(chuàng)建cookie,都是存放在客戶端。存放一些小而不敏感的數(shù)據(jù),并且數(shù)據(jù)類型只能是字符串(json)。
session:服務(wù)端生成session,存放在服務(wù)端。可以存放任意數(shù)據(jù),java中session中可以存放任意對(duì)象。
session必須依賴cookie實(shí)現(xiàn)。
session和token的區(qū)別
session:服務(wù)器生成、存儲(chǔ)、驗(yàn)證,以cookie的方式傳給客戶端,客戶端以同樣方式發(fā)送給服務(wù)端。
session有狀態(tài)。
token:服務(wù)器生成、驗(yàn)證,以cookie或者請(qǐng)求頭的方式傳給客戶端,客戶端以同樣方式發(fā)送給服務(wù)端。
token無狀態(tài)。
接口鑒權(quán)方案
接口鑒權(quán)token解決方案:完成登錄之后,獲取到token字符串,再次請(qǐng)求時(shí)加入。
?
接口鑒權(quán)session解決方案:完成登錄之后,獲取帶有session信息的cookie,再次請(qǐng)求時(shí)加入。
本文由檸檬班羅杰老師原創(chuàng),轉(zhuǎn)載需注明出處!
轉(zhuǎn)發(fā)到朋友圈是最高的贊賞
關(guān)注檸檬班微信公眾號(hào),獲取最新技術(shù)文章
讓軟件測(cè)試學(xué)習(xí)變得更簡(jiǎn)單!
今日福利
需要接口鑒權(quán)相關(guān)學(xué)習(xí)視頻
可加小米老師微信:
13327316731
暗號(hào):公眾號(hào)
在看的,麻煩點(diǎn)一下再走好嗎總結(jié)
以上是生活随笔為你收集整理的vue从url中获取token并加入到 请求头里_BATJ都会用到的接口鉴权cookie、session 和token...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 宝马:明年在华新建、升级三座工厂 3系纯
- 下一篇: vue 给取data值_web前端教程分