《使用ThinkPHP6开发项目》 - ThinkPHP6使用JWT生成Token

《使用ThinkPHP6开发项目》 - 登录接口一-CSDN博客

《使用ThinkPHP6开发项目》 - 登录接口二-CSDN博客

《使用ThinkPHP6开发项目》 - 登录接口三【表单验证】-CSDN博客

登录接口成功后返回Token,便于其他需要验证用户登录的接口携带Token进行请求校验

这里ThinkPHP6使用JWT进行Token验证

一、使用composer安装JWT扩展

php 复制代码
composer require firebase/php-jwt

安装扩展成功!!!

二、引入JWT文件

安装完成扩展后可以单独创建一个文件进行Token的生成及校验,也可以直接作为一个方法写在公共函数文件app/common.php中

php 复制代码
#app\common.php
use Firebase\JWT\JWT;

在common.php文件中写入创建Token方法

php 复制代码
if (!function_exists('createToken')) {
    /*
     * 创建token
     * @param array $data token记录参数
     * */
    function createToken($data)
    {
        $key = 'access_token_secret';   // 用于生成JWT令牌的签名密钥,自定义
        $alg = 'HS256';     // "alg"是JWT签名算法的名称["HS256"、"HS512"、"RS256"]
        $exp = 7200;    // "exp"是JWT令牌的过期时间,按秒数计算
        $setting = array(
            "iss" => '',         	    //签发者 可以为空
            "aud" => '',         	    //面象的用户,可以为空
            "iat" => time(),      	    //签发时间
            "nbf" => time(),            //在什么时候jwt开始生效  (+3这里表示生成100秒后才生效);立即生效
            'data' => $data			    //记录的userid的信息,这里是自已添加上去的,如果有其它信息,可以再添加数组的键值对
        );
        $access_token = $setting;
        $access_token['scopes'] = 'access_token';  // token标识,请求接口的token
        $access_token['exp'] = time() + $exp;  // access_token过期时间,这里设置2个小时
        $access_token_value = JWT::encode($access_token, $key, $alg);
        return $access_token_value;
    }
}

完整代码

php 复制代码
<?php
// 应用公共文件
use Firebase\JWT\JWT;

if (!function_exists('createToken')) {
    /*
     * 创建token
     * @param array $data token记录参数
     * */
    function createToken($data)
    {
        $key = 'access_token_secret';   // 用于生成JWT令牌的签名密钥,自定义
        $alg = 'HS256';     // "alg"是JWT签名算法的名称["HS256"、"HS512"、"RS256"]
        $exp = 7200;    // "exp"是JWT令牌的过期时间,按秒数计算
        $setting = array(
            "iss" => '',         	    //签发者 可以为空
            "aud" => '',         	    //面象的用户,可以为空
            "iat" => time(),      	    //签发时间
            "nbf" => time(),            //在什么时候jwt开始生效  (+3这里表示生成100秒后才生效);立即生效
            'data' => $data			    //记录的userid的信息,这里是自已添加上去的,如果有其它信息,可以再添加数组的键值对
        );
        $access_token = $setting;
        $access_token['scopes'] = 'access_token';  // token标识,请求接口的token
        $access_token['exp'] = time() + $exp;  // access_token过期时间,这里设置2个小时
        $access_token_value = JWT::encode($access_token, $key, $alg);
        return $access_token_value;
    }
}

登录成功后生成Token

相关推荐
toooooop87 天前
CRMEB 故障排查笔记:安全网关只放行 GET/POST 怎么办
前端·javascript·vue.js·thinkphp6·crmeb
我不会起名字3228 天前
Redis 从 0 到 1(十九):JWT 还是 Redis Session?登录态存储的 Go 实现
redis·go·jwt·session·登录态
李纲明10 天前
WordPress 登录后跳回登录页或提示「Cookie 被阻止」:先核站点 URL 与 HTTPS 一致,再查安全插件与 CDN
https·登录·cdn·wordpress·cookie·devdiy·站点url
Thanks_ks10 天前
Cookie 和 Session 到底是什么关系——登录态是怎么维持的
分布式·http·jwt·cookie·session·后端开发·登录态
李纲明11 天前
WordPress 登录后跳回登录页或一直转圈:先核 Cookie、站点 URL 与 HTTPS,再查 CDN 与安全插件
登录·cdn·wordpress·cookie·devdiy·安全插件
枫子有风12 天前
卡码网盘项目深挖
java·redis·jwt·es·pgvector
文慧的科技江湖13 天前
Token工厂技术拆解(10月28日)|月底对账多付605块,账单上缓存那一栏一直是零
token·api网关·ai应用·大模型api·token中转站
FungLeo13 天前
成为全栈·Go 后端篇·跨语言认证兼容:Node 与 Go 如何互认 JWT 和密码
golang·go·jwt·身份认证·成为全栈·bcrypt
云上工程笔记15 天前
2026年大模型Token成本测算推荐清单:输入输出、缓存、并发与峰值用量
人工智能·spring boot·缓存·token
玩AI的奶茶18 天前
GPU 算力租赁平台横向对比:六家主流平台,24GB 档价差 85%
服务器·人工智能·gpu算力·token·算力租赁