第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

JWT認(rèn)證怎么使token只能使用一次

JWT認(rèn)證怎么使token只能使用一次

PHP
幕布斯6054654 2019-03-10 19:38:11
項(xiàng)目用的是laravel。認(rèn)證方式是jwt認(rèn)證,我想token只能使用一次但是不知道怎么做?求大神提供思路.
查看完整描述

2 回答

?
呼如林

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個(gè)贊

剛才研究了一下源碼得到如下答案
最簡(jiǎn)單的辦法就是使用jwt自帶的jwt.refresh路由中間件(在這之前應(yīng)該使用jwt.auth驗(yàn)證了token的合法性).源代碼如下

public function handle($request, \Closure $next)
    {
        $response = $next($request);

        try {
            $newToken = $this->auth->setRequest($request)->parseToken()->refresh();
        } catch (TokenExpiredException $e) {
            return $this->respond('tymon.jwt.expired', 'token_expired', $e->getStatusCode(), [$e]);
        } catch (JWTException $e) {
            return $this->respond('tymon.jwt.invalid', 'token_invalid', $e->getStatusCode(), [$e]);
        }

        // send the refreshed token back to the client
        $response->headers->set('Authorization', 'Bearer '.$newToken);

        return $response;
    }

步驟為:
parseToken()把前端傳過來的在http header中的token解析出來
refresh()函數(shù)負(fù)責(zé)依據(jù)現(xiàn)在的token生成一個(gè)新的token并把現(xiàn)在的token放到黑名單
最后將newToken寫到返回給客戶端的header中

最后我在研究源碼的時(shí)候還發(fā)現(xiàn)如果我們需要每個(gè)請(qǐng)求都要刷新token的話那么就用jwt.refresh這一個(gè)中間件就好,不再需要jwt.auth這個(gè)中間件了。因?yàn)楫a(chǎn)生新的token的時(shí)候會(huì)解析出原來token中的payload的信息,比如sub。因此也會(huì)對(duì)原始的token進(jìn)行驗(yàn)證。

查看完整回答
反對(duì) 回復(fù) 2019-03-18
?
忽然笑

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊

JWT 認(rèn)證應(yīng)該帶上時(shí)間戳(或者其他可以表明請(qǐng)求獨(dú)立性的東西),每次發(fā)送請(qǐng)求的時(shí)候都計(jì)算一次 token,后端會(huì)拿到包含時(shí)間戳的參數(shù)列表和 token,然后根據(jù)它們也計(jì)算一個(gè) token,如果兩邊一致,則 token 驗(yàn)證通過。

因此 token 本身就是要每次都重新計(jì)算一次的,你在前端存儲(chǔ) token 是沒有太大價(jià)值的,當(dāng)然可以用于記錄日志,但這并沒有太多意義。

查看完整回答
反對(duì) 回復(fù) 2019-03-18
  • 2 回答
  • 0 關(guān)注
  • 2664 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)