真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

PHP如何用JWT創(chuàng)建Token-創(chuàng)新互聯(lián)

依賴

創(chuàng)新互聯(lián)建站于2013年開始,先為興化等服務(wù)建站,興化等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為興化企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

環(huán)境:php 5.5 以上 + OpenSSL擴展

lcobucci/JWT

可使用composer 安裝

composer require lcobucci/jwt

也可以直接到 GitHub下載

GitHub地址: https://github.com/lcobucci/jwt

參數(shù)解釋



iss (issuer)issuer請求實體,可以是發(fā)起請求的用戶的信息,也可是jwt的簽發(fā)者
sub (Subject)設(shè)置主題,類似于發(fā)郵件時的主題
aud (audience)接收jwt的一方
exp (expire)token過時間期
nbf (not before)當(dāng)前時間在nbf設(shè)定時間之前,該token無法使用
iat (issued at)token創(chuàng)建時間
jti (JWT ID)對當(dāng)前token設(shè)置唯一標(biāo)示

實例前準(zhǔn)備

下面記錄主要的依賴引用:

define('DS', DIRECTORY_SEPARATOR);
define('JWTPath', dirname(__FILE__) . DS);
include_once JWTPath . 'Builder.php';
include_once JWTPath . 'Signer.php';
include_once JWTPath . 'Signer' . DS . 'Keychain.php';
include_once JWTPath . 'Signer' . DS . 'Rsa.php';
include_once JWTPath . 'Signer' . DS . 'Rsa' . DS . 'Sha256.php';

當(dāng)然它們里面還有更多的引用需要你自己加,這個在你調(diào)試時根據(jù)錯誤提示一個個補就好了,這里就不多寫了。

實例

使用【lcobucci/JWT】產(chǎn)生 Token 的方式有兩種,在這里我只試驗了第二種。

第一種:使用秘鑰簽名生成 token

use Lcobucci\JWT\Builder;
use Lcobucci\JWT\Signer\Hmac\Sha256;
$builder = new Builder();
$signer = new Sha256();
// 設(shè)置發(fā)行人
$builder->setIssuer('http://example.com'); 
// 設(shè)置接收人
$builder->setAudience('http://example.org'); 
// 設(shè)置id
$builder->setId('4f1g23a12aa', true); 
// 設(shè)置生成token的時間
$builder->setIssuedAt(time()); 
// 設(shè)置在60秒內(nèi)該token無法使用
$builder->setNotBefore(time() + 60); 
// 設(shè)置過期時間
$builder->setExpiration(time() + 3600); 
// 給token設(shè)置一個id
$builder->set('uid', 1); 
// 對上面的信息使用sha256算法簽名
$builder->sign($signer, '簽名key');
// 獲取生成的token
$token = $builder->getToken();

驗證 Token

use Lcobucci\JWT\Signer\Hmac\Sha256;
$parse = (new Parser())->parse($token);
$signer = new Sha256();
$parse->verify($signer,'簽名key');// 驗證成功返回true 失敗false

第二種:使用RSA和ECDSA簽名

RSA和ECDSA簽名是基于公鑰和私鑰,所以必須使用私鑰生成和驗證使用

use Lcobucci\JWT\Signer\Keychain;
// 注意這里使用的sha256
use Lcobucci\JWT\Signer\Rsa\Sha256; 
$signer = new Sha256();
$keychain = new Keychain();
$builder = new Builder();
$builder->setIssuer('http://example.com');
$builder->setAudience('http://example.org');
$builder->setId('4f1g23a12aa', true);
$builder->setIssuedAt(time());
$builder->setNotBefore(time() + 60);
$builder->setExpiration(time() + 3600);
$builder->set('uid', 1);
// 與上面不同的是這里使用的是你的私鑰,并提供私鑰的地址
$builder->sign($signer, $keychain->getPrivateKey('file://{私鑰地址}'));
$toekn = $builder->getToken();

最后還可以通過強制轉(zhuǎn)換的形式來拿到你想要的純字符串的 Token

$toekn = (string) $builder->getToken();

和前端的交互可以放在返回的 JSON 格式中通過參數(shù)帶過去,也可以存放在 header Authorization 中。

驗證 Token

$signer = new \Lcobucci\JWT\Signer\Rsa\Sha256();
$keychain = new \Lcobucci\JWT\Signer\Keychain();
$parse = new \Lcobucci\JWT\Parser();
$parse->parse((string)$token);
var_dump($token->verify($signer, $keychain->getPublicKey(self::$dir . '/public.key')));
))

獲取數(shù)據(jù)

因為數(shù)據(jù)部分可以直接獲取到,不用解密。所以在驗證token合法后直接讀取即可,這也是不要在載體中存放敏感信息的原因。

$parse = (new Parser())->parse($token);
// 獲取全部信息,返回一個數(shù)組,
var_dump($parse->getClaims());
// 獲取單條信息
var_dump($parse->getClaim('aud'));

以上就是PHP使用JWT創(chuàng)建Token的實例詳解的詳細(xì)內(nèi)容,更多請關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司其它相關(guān)文章!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


本文標(biāo)題:PHP如何用JWT創(chuàng)建Token-創(chuàng)新互聯(lián)
網(wǎng)頁網(wǎng)址:http://weahome.cn/article/hggoi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部