01、在composer.json中增加一行调用jwt的代码:
{"name": "codeigniter4/appstarter","description": "CodeIgniter4 starter app","license": "MIT","type": "project","homepage": "https://codeigniter.com","support": {"forum": "https://forum.codeigniter.com/","source": "https://github.com/codeigniter4/CodeIgniter4","slack": "https://codeigniterchat.slack.com"},"require": {"php": "^8.1","codeigniter4/framework": "^4.5.3","firebase/php-jwt": "^5.2"},"require-dev": {"fakerphp/faker": "^1.9","mikey179/vfsstream": "^1.6","phpunit/phpunit": "^10.5.16"},"autoload": {"psr-4": {"App\\": "app/"},"exclude-from-classmap": ["**/Database/Migrations/**"]},"autoload-dev": {"psr-4": {"Tests\\Support\\": "tests/_support"}},"config": {"optimize-autoloader": true,"preferred-install": "dist","sort-packages": true},"scripts": {"test": "phpunit"} }
02、在目录中输入composer update,就可以更新到最新的了。
03、Tx_jwt.php代码如下:
<?phpnamespace App\Libraries;use \Firebase\JWT\JWT; use \Firebase\JWT\Key;class Tx_jwt {protected $key = '123abc';//http://localhost/phmci4/public/index.php/myjwt/generatejwtfunction encodeJWT($user){$payload = array('data' => $user,'iss' => 'TIANPAN',//签发者 可以为空'aud' => 'TIANPAN',//面象的用户,可以为空'iat' => time(),//签发时间'nbf' => time(), //在什么时候jwt开始生效 (这里表示生成10秒后才生效)'exp' => time() + 3600, //token 过期时间 );$jwt_encoded = JWT::encode($payload, $this->key);return $jwt_encoded;}//http://localhost/phmci4/public/index.php/myjwt/decodejwtfunction decodeJWT($token){// 此时$decoded是一个对象,你可以根据需要访问其属性try {$jwt_decoded = JWT::decode($token, new Key($this->key, 'HS256'));return $jwt_decoded;} catch (\Exception $e) {return $e;}}}
04、Api001.test代码如下;
<?php namespace App\Controllers\Api;use App\Controllers\BaseController; use App\Libraries\Tx_jwt;//访问地址:http://localhost/phmci4/public/index.php/api/api001/ class Api001 extends BaseController {protected $Jwt;public function __construct(){$this->Jwt = new Tx_jwt;}//http://localhost/phmci4/public/index.php/api/api001/encodetokenpublic function encodetoken(): string{$user = array('username' => 'tianpan','role' => 'guest');$token = $this->Jwt->encodeJWT($user);return $token;}//http://localhost/phmci4/public/index.php/api/api001/decodetokenpublic function decodetoken(): string{$token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjp7InVzZXJuYW1lIjoidGlhbnBhbiIsInJvbGUiOiJndWVzdCJ9LCJpc3MiOiJUSUFOUEFOIiwiYXVkIjoiVElBTlBBTiIsImlhdCI6MTcyNDk5NzczNCwibmJmIjoxNzI0OTk3NzM0LCJleHAiOjE3MjQ5OTc3NTR9.1Yr_4khWZYKa3IGXCJ4i0fpDCPr7RTyc21cNPclzR_k';$user = $this->Jwt->decodeJWT($token);return Json_encode($user);}//-------------------------------------------------------------------- }
05、结构目录如下:
06、浏览器如下: