corviz /
使用PHP生成Json Web Tokens的库
v1.0
2022-03-22 11:38 UTC
Requires
- php: >=8.0
- ext-json: *
- ralouphie/getallheaders: ^3.0
README
如何安装
composer require corviz/jwt
提供的签名者
提供的声明验证器
基本用法
生成令牌
<?php use Corviz\Jwt\Token; use Corviz\Jwt\SignerFactory; $token = Token::create() ->with('exp', strtotime('+ 1 hour')) //Expires in one hour ->withSigner(SignerFactory::build('HS256')) //HS256 signer is provided by default. This could be omitted ->sign($mySecret) ->toString();
验证并从令牌中读取值
<?php use Corviz\Jwt\Token; $token = Token::fromString('xxxx.yyyyy.zzzzz'); $isValid = $token->validate($mySecret); if ($isValid) { $payload = $token->getPayload(); $headers = $token->getHeaders(); }
验证您的私有声明
首先,您必须创建您的验证器
use \Corviz\Jwt\Validator\Validator; class MyClaimValidator extends Validator { /** * @return string */ public function validates() : string { return 'my-claim'; //this will validate value inside 'my-claim', when set } /** * @param mixed $value * @return bool */ public function validate(mixed $value) : bool { // this claim must contain value 'a', 'b' or 'c' $valid = in_array($value, ['a', 'b', 'c']); return $valid; } }
然后,在运行 validate() 方法之前,只需分配您的验证器即可
<?php use Corviz\Jwt\Token; $token = Token::fromString('xxxx.yyyyy.zzzzz') ->assignValidator(new MyClaimValidator()); $isValid = $token->validate($mySecret); if ($isValid) { $myClaim = $token->getPayload('my-claim'); }