本文主要是介绍laravel10使用firebase/php-jwt 6.0,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
话不多说,直接上示例
<?php
/*** Created by PhpStorm* User: xxx 根据自己情况设置* Date: 2024/3/20* Time: 15:53* Brief:* docs:*/namespace App\lib\jwt;use App\Exceptions\BaseException;
use Exception;
use Firebase\JWT\JWT;
use Firebase\JWT\Key;class JwtUtil
{//编码public function encode(){$key = env('JWT_SECRET'); //key要和签发的时候一样$time = time(); //当前时间$token = ['iss' => 'http://www.helloweba.net', //签发者 可选'aud' => 'http://www.helloweba.net', //接收该JWT的一方,可选'iat' => $time, //签发时间'nbf' => $time, //(Not Before):某个时间点后才能访问,比如设置time+30,表示当前时间30秒后才能使用'exp' => $time + 7200, //过期时间,这里设置2个小时'data' => [ //自定义信息,不要定义敏感信息'userid' => 1,'username' => '李小龙']];$keyId = "keyId";return JWT::encode($token, $key, 'HS256',$keyId); //输出Token,指定签发方式}//解码public function decode($jwt){$key_1 = env('JWT_SECRET'); //key要和签发的时候一样try {JWT::$leeway = 60;//当前时间减去60,把时间留点余地$key = new Key($key_1, 'HS256');$decoded = JWT::decode($jwt, $key ); //HS256方式,这里要和签发的时候对应$arr = (array)$decoded;return $arr;} catch (\Firebase\JWT\SignatureInvalidException $e) { //签名不正确throw new BaseException(100,'令牌错误');} catch (\Firebase\JWT\BeforeValidException $e) { // 签名在某个时间点之后才能用throw new BaseException(200,'令牌未开始使用');} catch (\Firebase\JWT\ExpiredException $e) { // token过期throw new BaseException(300,'令牌已过期');} catch (Exception $e) { //其他错误throw new BaseException(500,$e->getMessage());}}}
这里有一个比较坑的地方,JWT::decode()中第二个参数,是一个对象
这篇关于laravel10使用firebase/php-jwt 6.0的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!