基于PHP實現(xiàn)JWT登錄鑒權(quán)的示例代碼_第1頁
基于PHP實現(xiàn)JWT登錄鑒權(quán)的示例代碼_第2頁
基于PHP實現(xiàn)JWT登錄鑒權(quán)的示例代碼_第3頁
基于PHP實現(xiàn)JWT登錄鑒權(quán)的示例代碼_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第基于PHP實現(xiàn)JWT登錄鑒權(quán)的示例代碼useLcobucci\JWT\Validation\Constraint\IdentifiedBy;

useLcobucci\JWT\Validation\Constraint\IssuedBy;

useLcobucci\JWT\Validation\Constraint\PermittedFor;

useLcobucci\JWT\ValidationData;

classJwtUtil

//jwtgithub:/lcobucci/jwthttps://jwt.io/

protected$issuer="";

protected$audience="";

protected$id="4f1g23a12aa11";

//key是絕對不允許泄露的

protectedstatic$key="8swQsm1Xb0TA0Jw5ASPwClKVZPoTyS7GvhtaW0MxzKEihs1BNpcS2q3FYMJ11111";

*簽發(fā)令牌

publicfunctiongetToken()

$time=time();

$config=self::getConfig();

assert($configinstanceofConfiguration);

//簽發(fā)token,設(shè)置簽發(fā)人、接收人、唯一標(biāo)識、簽發(fā)時間、立即生效、過期時間、用戶id、用戶username、簽名

$token=$config-builder()

-issuedBy($this-issuer)//Configurestheissuer(issclaim)

-permittedFor($this-audience)//Configurestheaudience(audclaim)

-identifiedBy($this-id,true)//Configurestheid(jticlaim),replicatingasaheaderitem

-issuedAt($time)//Configuresthetimethatthetokenwasissue(iatclaim)

-canOnlyBeUsedAfter($time+1)//Configuresthetimethatthetokencanbeused(nbfclaim)簽發(fā)x秒鐘后生效

-expiresAt($time+3600)//Configurestheexpirationtimeofthetoken(expclaim)

-withClaim('uid',20)//Configuresanewclaim,called"uid"

-withClaim('username',"Make")//Configuresanewclaim,called"uid"

-getToken($config-signer(),$config-signingKey());//Retrievesthegeneratedtoken

return$token-toString();

*驗證jwttoken并返回其中的用戶id

*verifytoken

publicfunctionverifyToken_bak($token)

try{

$config=self::getConfig();

assert($configinstanceofConfiguration);

$token=$config-parser()-parse($token);

assert($tokeninstanceofPlain);

//Lcobucci\JWT\Validation\Constraint\IdentifiedBy:驗證jwtid是否匹配

//Lcobucci\JWT\Validation\Constraint\IssuedBy:驗證簽發(fā)人參數(shù)是否匹配

//Lcobucci\JWT\Validation\Constraint\PermittedFor:驗證受眾人參數(shù)是否匹配

//Lcobucci\JWT\Validation\Constraint\RelatedTo:驗證自定義cliam參數(shù)是否匹配

//Lcobucci\JWT\Validation\Constraint\SignedWith:驗證令牌是否已使用預(yù)期的簽名者和密鑰簽名

//Lcobucci\JWT\Validation\Constraint\StrictValidAt:::驗證存在及其有效性的權(quán)利要求中的iat,nbf和exp(支持余地配置

//Lcobucci\JWT\Validation\Constraint\LooseValidAt:驗證的權(quán)利要求iat,nbf和exp,當(dāng)存在時(支持余地配置)

//驗證jwtid是否匹配

$validate_jwt_id=newIdentifiedBy($this-

//驗證簽發(fā)人url是否正確

$validate_issued=newIssuedBy($this-issuer);

//驗證客戶端url是否匹配

$validate_aud=newPermittedFor($this-audience);

$config-setValidationConstraints($validate_jwt_id,$validate_issued,$validate_aud);

$constraints=$config-validationConstraints();

if(!$config-validator()-validate($token,...$constraints)){

die("tokeninvalid!");

}catch(\Exception$e){

die("error:".$e-getMessage());

$jwtInfo=$token-claims();//這是jwttoken中存儲的所有信息

return$jwtInfo-get("uid");//獲取uid

*加密解密使用的配置

*@returnConfiguration

publicstaticfunctiongetConfig()

$configuration=Configuration::forSymmetricSigner(

//YoumayuseanyHMACvariations(256,384,and512)

newSha256(),

//replacethevaluebelowwithakeyofyourown!

InMemory::base64Encoded(self::$key)

//YoumayalsooverridetheJOSEencoder/decoderifneededbyprovidingextraargumentshere

return$configuration;

*另一種驗證方法,但是已經(jīng)棄用

*verifytoken

publicfunctionverifyToken($token)

$token=(newParser())-parse((string)$token);

//驗證token

$data=newValidationData();

$data-setIssuer($this-issuer);//驗證的簽發(fā)人

$data-setAudience($this-audience);//驗證的接收人

$data-setId($this-//驗證token標(biāo)識

if(!$token-validate($data)){

//toke

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論