thinkphp框架使用JWTtoken的方法詳解

2022-09-26 04:15:11 字數 2188 閱讀 1485

簡介

一:jwt介紹:全稱json web token,基於json的開放標準((rfc 7519) ,以token的方式代替傳統的cookie-session模式,用於各伺服器、客戶端傳遞資訊簽名驗證。

二:jwt優點:

1:服務端不需要儲存傳統會話資訊,沒有跨域傳輸問題,減小伺服器開銷。

2:jwt構成簡單,占用很少的位元組,便於傳輸。

3:json格式通用,不同語言之間都可以使用。

三:jwt組成

1:jwt由三部分組成:

頭部(header)

載荷(payload) 包含一些定義資訊和自定義資訊

簽證(signature)

2:具體構成:

header:

載荷(payload)

}載荷包括兩部分:標準宣告和其他宣告。

標準宣告:jwt標準規定的宣告,但不是必須填寫的;

標準宣告字段:

接收該jwt的一方

iss: jwt簽發者

sub: jwt所面向的使用者

aud: 接收jwt的一方

exp: jwt的過期時間,過期時間必須要大於簽發時間

nbf: 定義在什麼時間之前,某個時間點後才能訪問

iat: jwt的簽發時間

jti: jwt的唯一身份標識,主要用來作為一次性token。

**composer require firebase/php-jwt

extend 下建立token類

namespace token;

use think\controller;

use think\facade\request;

use firebase\jwt\jwt;

/**token類

* class token

* @package app\api\controller

*/class token

if(!$exp_time)

$token['exp']=$time+$exp_time; //token過期時間,這裡設定2個小時

if($data)

$json = jwt::encode($token,$key);

$returndata['status']="200";//

$returndata['msg']='success';

$returndata['token']= $json;//返回的資料

return $returndata; //返回資訊

}catch(\firebase\jwt\expiredexception $e)catch(\jalehguuxeexception $e)

} /**

* 驗證token是否有效,預設驗證exp,nbf,iat時間

* @param string $jwt 需要驗證的token

* @return string $msg 返回訊息

*/public function checktoken($jwt) catch(\firebase\jwt\signatureinvali程式設計客棧dexception $e) catch(\firebase\jwt\beforevalidexception $e) catch(\firebase\jwt\expiredexception $e) catch(\exception $e)

//firebase定義了多個 throw new,我們可以捕獲多個catch來定義問題,catch加入自己的業務,比如token過期可以用當前token重新整理乙個新token}簽發

$jwttoken = new token();

$tokendata = array(

'openid' => $user->getid(),

'uniacid' => $_w['uniacid'],

);$token = $jwttoken->createtoken($tokendata)

驗證if (empty(程式設計客棧$_server['http_authorization']))

ThinkPHP框架使用筆記

think version 5.0.13 sql訪問日誌,預設在debug模式下才會列印出來。測試發現 瀏覽器訪問 資料庫除錯模式 debug為false日誌不會列印sql日誌,為true會列印日誌 命令列訪問 資料庫除錯模式debug對列印sql日誌沒有影響都會列印出來。可以設定全域性debug模...

thinkphp框架使用支付寶

最近工作原因需要使用支付寶支付,所以總結了下支付寶支付介面如何在thinkphp當中使用。alipay.config.php是相關引數的配置檔案 alipayapi.php 是支付寶介面入口檔案 notify url.php 是伺服器非同步通知頁面檔案 return url.php 是頁面跳轉同步通...

學習使用thinkphp框架製作cms

最近我在學習使用thinkphp框架製作cms,乙個建站的cms,對於乙個沒學習過php的人來說,直接使用框架,我感覺好吃力。不過我也不會就此放棄,不能總是這麼的無所事事,人生在世,總要做點什麼,才不會讓自己有所遺憾。今天是2014年01月13日,我就從驗證碼開始吧,tp的驗證碼我弄了好幾天沒弄出來...