038.CI4框架CodeIgniter,使用Jwt生成token

news/2024/11/16 21:30:54/文章来源:https://www.cnblogs.com/tianpan2019/p/18389763

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、浏览器如下:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/789863.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OPPO手机备份

通过「数据备份与迁移」备份的资料是存储在手机存储中的,当对手机进行恢复出厂设置或刷机时会清除备份数据,此时,就需要我们在操作前将备份文件拷贝到外置存储或电脑设备中。在「数据备份与迁移」中将资料备份好后,用数据线将手机连接至电脑,根据提示在手机屏幕上选择「传…

财务知识-做账顺序

财务知识-做账顺序

Ceph Reef(18.2.X)之Swift操作对象存储网关

作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 目录一.Swift概述1.Switft API接口概述2.swift实现的基本逻辑二.swift命令行配置实战1.创建swift的实践用户2.基于现有用户创建子用户3.基于子用户生成secret_key信息4.安装swift命令5.配置swift的环境变量三…

【靶场搭建】搭建Metasploitable2漏洞靶场

原创 Kali与编程NEW有学员问我,如何合法进行渗透测试,总不能拿真实的网站来练手,一来成功率不高,二来容易被请喝茶。 其实很简单,自己搭建实验靶场,尽情把完,不犯法! Metasploitable2 是基于 Ubuntu 操作系统构建的,它故意配置了大量已知的安全漏洞,这次我就教会你如…

代码随想录算法day4 - 链表2

题目1 24. 两两交换链表中的节点 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例 1:输入:head = [1,2,3,4] 输出:[2,1,4,3]示例 2: 输入:head = [] 输出:[]示例 3: 输入…

【Shell脚本】查看Linux网卡实时流量

原创 唐哥 成长的小学生在Linux操作系统中,查询网卡流量并不是特别方便,而且统计方式也不直观,下面给大家整理了一个脚本,直接复制到服务器上运行即可,不存在什么依赖关系。脚本内容 将内容保存到一个文件中,文件名称可以自定义,比如:vi catnet.sh将以下内容保存到脚本…

.Net 5.0 WebAPI 发布至 CentOS 7 系统

本文先安装 .net 5.0 的环境,再创建一个示例项目并发布至 CentOS 上,同时列明了一些注意的点;最后将 dotnet 命令添加到系统自启动服务。〇、前言 本文主要介绍了在 CentOS 7 上部署 WebAPI 项目的过程。 先安装 .net 5.0 的环境,再创建一个示例项目并发布至 CentOS 上,同…

高德地图,只有部分marker显示InfoWindow并可点击

高德地图,只有部分marker显示InfoWindow并可点击 原因: 加了 MarkerCluster 之后,出现不稳定现象“有部分marker显示InfoWindow并可点击”。// 将所有的标记点添加到marker cluster // marker cluster// markerLayer.setMarkers(markers); // marker cluster // th…

【漏洞分析】OSN 代币攻击事件:一笔资金伪造多个分红大户

背景 OSN 是一种 fee on transfer 代币,会根据用户分红账户的余额对用户发放分红。攻击者利用漏洞增发分红账户的余额,随后触发分红机制完成获利。 OSN:https://bscscan.com/address/0x810f4c6ae97bcc66da5ae6383cc31bd3670f6d13#code 攻击由三笔交易组成:https://app.bloc…

IDEA 使用教程

概述 视频教程:【尚硅谷IDEA安装idea实战教程(百万播放,新版来袭)】 jetbrains 中文官网 IDEA 官网 IDEA 从 IDEA 2022.1 版本开始支持 JDK 17,也就是说如果想要使用 JDK 17,那么就要下载 IDEA 2022.1 或者之后的版本。 Jetbrains 公司旗下还有其它产品,比如:WebStorm:…

[Redis]Intset

intset 小整数集合 set 集合容纳的元素都是整数并且元素个数较少时, Redis 会使用 intset 来存储集合元素。 intset 是紧凑的数组结构,同时支持 16 位、 32 位和 64 位整数 struct intset<T> {int32 encoding;//决定整数位宽是 16 位、 32 位还是 64int32 length ;//元…