午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

php中關(guān)于token驗(yàn)證的相關(guān)問題詳解

瀏覽:21日期:2022-06-14 11:47:15
目錄token驗(yàn)證首先是為什么用?那么怎么用呢?token的組成一般 token 組成:JWT 組成:標(biāo)準(zhǔn)的組成:總結(jié)token驗(yàn)證

什么是token?我相信很多開發(fā)者都或多或少聽過基于 token 的用戶鑒權(quán)和基于 session 的用戶鑒權(quán),而今天說的 token 驗(yàn)證就是第一種了。token 的意思是“令牌”,是用戶第一次登錄服務(wù)器返回的,它能讓用戶不需要提交賬戶和密碼就能進(jìn)行服務(wù)器驗(yàn)證身份,它是被放在請求頭中一起提交給服務(wù)器的。

為什么用 token 驗(yàn)證?怎么用 token 驗(yàn)證?現(xiàn)在簡單介紹一下,有錯誤請大牛指出,我會立即更正!

首先是為什么用?

為了驗(yàn)證用戶的登錄情況,畢竟不是登錄狀態(tài)的話很多東西是不允許訪問和呈現(xiàn)出來的。 減少數(shù)據(jù)庫的頻繁查詢,增加服務(wù)器性能,使得服務(wù)器更加健壯。 它可以在多個服務(wù)間共享,完全由應(yīng)用管理,可以避開瀏覽器的同源策略。 增加擴(kuò)展性、安全性和減少服務(wù)器內(nèi)存開銷。傳統(tǒng)的服務(wù)器驗(yàn)證是使用 cookie + session 驗(yàn)證,服務(wù)器需要每一次都驗(yàn)證客戶端的請求去辨別客戶端身份,并且還要創(chuàng)建一個記錄將用戶信息存儲起來,然而隨著現(xiàn)在科技發(fā)達(dá),這種驗(yàn)證弊端也就顯露出來了,例如用戶增多從而引發(fā)內(nèi)存資源消耗變大、CORS(跨域資源共享)和 CSRF(跨域請求偽造)等。

那么怎么用呢?

流程: 客戶端的用戶輸入賬戶密碼請求登錄。 服務(wù)端收到請求并進(jìn)行驗(yàn)證,成功則生成一個 token 值并返回給客戶端。 客戶端收到 token 值并將其存儲,例如 本地存儲:localStore 或 放在Cookie。 客戶端每次請求都將 token 值放在請求頭中發(fā)給服務(wù)器,服務(wù)器進(jìn)行驗(yàn)證有效性。 成功則返回客戶端請求的數(shù)據(jù),失敗可以讓用戶進(jìn)行登錄重新獲取新的 token 值。

token的組成一般 token 組成:

Uid(用戶身份的唯一標(biāo)識) time(時間戳) sign(簽名)

JWT 組成:

JWT(JSON Web Tokens) 讀:jot

標(biāo)準(zhǔn)的組成:

header(頭部),參數(shù)主要包括:類型--JWT,簽名的算法--HS256。

private static $header=array('alg'=>'HS256', //生成signature的算法'typ'=>'JWT' //類型);

poyload(負(fù)荷):一般是自己想要放置的數(shù)據(jù)(因?yàn)樾畔┞叮唤ㄗh放敏感信息)。

$time = time();$tokenInfo = [ 'iss'=>'CIMS', 'iat'=>$time, 'nbf'=>$time+2, 'jti'=>md5(uniqid('JWT').$time), 'sub'=>$data, 'exp'=> $time+7200];

sign(簽名):為了防止被惡意篡改數(shù)據(jù)。

/*** HMACSHA256簽名 https://jwt.io/ 中HMACSHA256簽名實(shí)現(xiàn)* @param string $input 為base64編碼后連接而成的的header和poyload的字符串:base64UrlEncode(header).'.'.base64UrlEncode(tokenInfo)* @param string $key* @param string $alg 算法方式* @return mixed*/private static function signature(string $input, string $key, string $alg = 'HS256'){$alg_config=array('HS256'=>'sha256');return self::base64UrlEncode(hash_hmac($alg_config[$alg], $input, $key,true));}

結(jié)果:一般會使用 base64 編碼,中間用.隔開

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOjEsIm5hbWUiOiJjZXNoaSIsImF1ZCI6IiIsImV4cCI6MTY4MTIyNDY0OCwiaWF0IjoxNjgxMjIxMDQ4LCJpc3MiOiIiLCJqdGkiOiJkN2UxYTBiNGU3MDZmODUxMjgzZWZkZWVlZjQ5MWEwOSIsIm5iZiI6MTY4MTIyMTA0OCwic3ViIjoiIn0.qRTyO1pYHHJxBNRwHUz032NWKKqS3C9dakOHASJyASk總結(jié)

擴(kuò)展

放請求頭:

JWT 缺點(diǎn):1.簽發(fā)生成后無法修改。2.不包含權(quán)限控制。

解決token 注銷問題:盡快讓 token 失效,退出登錄后刪除 cookie,對失效的 token 形成黑名單,會違無狀態(tài)特性,但是標(biāo)記時間短,會減少服務(wù)器壓力。

解決token 續(xù)簽問題:后端在用戶登錄的接口添加 token 有效期判斷:例如即將過期那就重新生成一個返回。

token驗(yàn)證目前是非常流行的,不僅僅只是在web網(wǎng)站上,移動端、小程序也會用到。例如小程序用的是使用 login 獲取 code 發(fā)送給后端進(jìn)行一系列使用微信官方API接口獲取數(shù)據(jù)再進(jìn)行加密等操作才返回 token,這里就不詳細(xì)展開了吧,有興趣哈哈哈哈自己查下看看啦。

到此這篇關(guān)于php中關(guān)于token驗(yàn)證的相關(guān)問題詳解的文章就介紹到這了,更多相關(guān)php token驗(yàn)證內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: PHP
主站蜘蛛池模板: 97超碰自拍 | 免费av福利 | 中国性戏观 | 久久青青国产 | 亚洲欧美日韩另类 | av亚洲精品 | 午夜精品福利一区二区 | 精品一区二区在线视频 | 91成人免费视频 | 一区二区亚洲视频 | a级片久久 | 国产成人在线免费观看视频 | 欧美激情在线 | 欧美精品亚洲精品 | 亚洲精品成人在线 | 日韩综合在线 | 精品久久视频 | 国产啊v在线观看 | 亚洲黄色在线看 | 欧美成人一级 | 国产婷婷色 | 天天爽夜夜爽视频 | 国产精品短视频 | 久艹视频在线 | 国产激情综合 | 国产天天操 | 国产精品九 | 免费一区视频 | a级毛毛片 | 欧美日韩一区二区在线观看 | 国产婷婷色一区二区三区 | 伊人青草 | 免费在线黄色网址 | 欧美一区二区在线播放 | 免费在线黄色网址 | 色图av| 日本精品国产 | 情侣av | 糖心在线视频 | 一级免费片 | 久久精品99国产精品日本 |