什么是token
token就是令牌,前后端進(jìn)行鑒權(quán)的一種有效形式,比傳統(tǒng)的 session 鑒權(quán)更加方便,簡單來說:當(dāng)用戶首次登陸時(shí),網(wǎng)站會(huì)給你一張“門卡”,以后你可以憑借門卡直接進(jìn)入,而無需再次申請(qǐng)。但一段時(shí)間之后門卡實(shí)效,你需要再到前臺(tái)充磁,這里的門卡就是 token
? 那么它的用途有哪些呢?
? 進(jìn)行跨域,簡單操作,特別適合前后端分離項(xiàng)目。
補(bǔ)充:多數(shù)情況下,token 作為一種令牌,都是在服務(wù)器端生成,生成的方法很多,從簡單點(diǎn)的對(duì)時(shí)間或者id 或者兩者混合起來進(jìn)行 哈希運(yùn)算 的值到自己設(shè)計(jì)更復(fù)雜的算法都可以,生成的目的是為了給前端下一次通信時(shí)使用這個(gè)token 作為令牌,當(dāng)作為一個(gè)請(qǐng)求資源的許可的標(biāo)識(shí),而服務(wù)器則會(huì)視這個(gè) token 在一段時(shí)間內(nèi)都是有效的,并且還可以額外看情況加上是否是同一個(gè) ip 之類的其它限制,從而防止某種資源被非法訪問。
? 偶有前端(包括本地客戶端或者app)生成 token 的情況是已經(jīng)約定好了一個(gè)好的加密機(jī)制,服務(wù)器可以信任客戶端的這個(gè)輸入的情況下可以由前端或者客戶端生成。
?token 的作用
1.token的由來
首先在token之前前后端判斷身份標(biāo)識(shí)用session,基于cookie來實(shí)現(xiàn)。最新的瀏覽器漸漸的淘汰了cookie了,所以這種形式慢慢就沒了,于是大家換了一種校驗(yàn)形式,使用token.
2.token里的值都是什么
token是由后端程序生成,里面一般封裝了用戶的id,用戶本次登錄的ip地址,過期的時(shí)間,可能還有一些其他后端加入的字符等。 { "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTkyLCJ1c2VybmFtZSI6IuiKseWNt-WEvyIsImlzbG9naW4iOjEsImlhdCI6MTY1MzQ1OTY1MywiZXhwIjoxNjUzNDYzMjUzfQ.xIQHcNy8B_cNGgfZTcj4m2aM3sG_ZlNa-zLDsR9DPWk" } token在后端程序里可以解密,后端根據(jù)數(shù)據(jù)進(jìn)行校驗(yàn)用戶是否合法。
3.利用token做記住密碼:一定不是把密碼存本地
很有網(wǎng)站有記住我【3-7天】
本次登錄勾選了記住我3天,當(dāng)我登錄的時(shí)候我需要給接口一個(gè)額外的參數(shù),就是記住我并且保留3天,后端就會(huì)在token中加入一個(gè)3天過期的時(shí)間。
當(dāng)我們登錄成功后,我們需要把token存入本地,并且把記住我那個(gè)標(biāo)記也存。
當(dāng)我們退出登錄時(shí),先判斷本地那個(gè)記住我標(biāo)識(shí)是否為true,如果為true,則token不刪除。
下一次打開登錄頁面,從本地讀取記住我的標(biāo)識(shí),如果時(shí)true則把密碼框給一個(gè)假的****,提交登錄的時(shí)候,就把token上次就可以了。
有哪些場景需要登錄
進(jìn)入客服的時(shí)候,要先判斷是否登錄
進(jìn)入訂單的時(shí)候,需要
購物車的時(shí)候,需要 所以登錄成功后,應(yīng)該跳轉(zhuǎn)回最開始被攔截的地方
項(xiàng)目中的權(quán)限管理:【自定義指令控制、路由守衛(wèi)】
如果項(xiàng)目中很多地方都需要權(quán)限管理,比如路由的跳轉(zhuǎn)前需要判斷,比如事件前需要判斷。 自定義指令去實(shí)現(xiàn)。 指令是用來控制元素的,所以我們使用自定義指令來解決。