返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >在 ThinkPHP 中使用 JWT 签发 Token
  • 128
分享到

在 ThinkPHP 中使用 JWT 签发 Token

PHPTokenJsonWebTokenJWT 2023-10-26 21:10:57 128人浏览 独家记忆
摘要

本文目录 一、什么是 JWT二、在 ThinkPHP 中安装 JWT三、签发 Token 示例四、使用 Token 示例 一、什么是 Jwt JWT,全称:JSON WEB To

本文目录

一、什么是 Jwt

JWT,全称:JSON WEB Token,可以看成是一种 Token 签发方案。

Token 通常叫做认证令牌,用于客户端和服务端在交互时的身份认证。

JWT 的优势:

  1. 数据量小,传输速度快。
  2. 使用 json 数据格式,可跨语言。
  3. 即签即发,不需要在服务端保存。
  4. 适合移动端。

更多关于 JWT 的信息可访问官网查看 >>>

二、在 ThinkPHP 中安装 JWT

先去官网挑选适合自己项目的库。

进入官网,选择 Libraries ,选择 php 语言过滤。

在这里插入图片描述

每个库都有对应的 composer 命令。

这里选择第一个,在 ThinkPHP 项目根目录下执行命令安装:

composer require firebase/php-jwt

三、签发 Token 示例

public function createToken(){    $jwtContent = [    // 签发人,这里采用当前站点域名        'iss' => request()->domain(),        // 签发时间,当前时间戳        'iat' => time(),        // 到期时间,1天后        'exp' => time() + 86400,        // 自定义数据        'data' => [            'user_id' => 1,            'user_name' => 'jack'        ]    ];    // 自定义 key,用于加密 token,只保存在服务端,不可泄漏。    $key = 'iwsojfiowejgiroegNIOamr';    // 使用 HS256 算法,生成 token 。    $token = JWT::encode($jwtContent, $key, 'HS256');    // 打印输出    halt($token);}

结果示例:

eyJ0eXAiOiJKV1QiLCJhbGCiOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vd3D3LnRwNS5jb20iLCJpYXQiOjE2Njc3ODk2MDEsImV4cCI6MTY2Nzc4OTYyMSwiZGF0YSI6eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6MTIzfX0.JWBTMvl_6vv3SBCm5moM6BzYqvb8Kr7PQ6VnTL66HLc

生成 tokenJWT 提供了以下字段可以选择:

iss:发行者exp:到期时间sub:主题aud:用户nbf:生效时间iat:发布时间jti:JWTID,用于标识该JWT

四、使用 Token 示例

public function checkToken(){    try {    // 此 key 必须和生成 token 时的一致。        $key = 'iwsojfiowejgiroegnioamr';        // 接收客户端提交的 token 。        $token = input('token/s');        $test = JWT::decode($token, new Key($key, 'HS256'));        halt((array)$test);    } catch (SignatureInvalidException $signatureInvalidException) {    // 获取验证失败时抛出的错误信息    halt($signatureInvalidException->getMessage());    } catch (ExpiredException $expiredException) {    // 获取 token 过期时抛出的错误信息    halt($expiredException->getMessage());    } catch (Exception $exception) {    // 获取抛出的其它错误信息    halt($exception->getMessage());    }}

解析 token 成功示例:

array(4) {  ["iss"] => string(18) "Http://www.tp5.com"  ["iat"] => int(1667802222)  ["exp"] => int(1667888622)  ["data"] => object(stdClass)#13 (2) {    ["user_id"] => int(1)    ["username"] => string(4) "jack"  }}

解析 token 失败示例:

Signature verification failed

解析 token 过期示例:

Expired token

来源地址:https://blog.csdn.net/ZhangJiWei_2019/article/details/127728267

--结束END--

本文标题: 在 ThinkPHP 中使用 JWT 签发 Token

本文链接: https://lsjlt.com/news/471771.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 在 ThinkPHP 中使用 JWT 签发 Token
    本文目录 一、什么是 JWT二、在 ThinkPHP 中安装 JWT三、签发 Token 示例四、使用 Token 示例 一、什么是 JWT JWT,全称:Json Web To...
    99+
    2023-10-26
    PHP Token Json Web Token JWT
  • vue中使用jwt-decode解析token的方法
    安装: cnpm i -S jwt-decode 引入: import jwt_decode from "jwt-decode"; 使用: import jwt_decode f...
    99+
    2024-04-02
  • ThinkPHP6使用JWT+中间件实现Token验证
    目录 前言 一、JWT介绍 二、使用composer安装JWT扩展包  三、在ThinkPHP6中直接使用JWT生成验证Token(简单粗暴) (一)代码文件 (二)请求接口测试 四、在ThinkPHP6中使用JWT+中间件生成验证Tok...
    99+
    2023-09-01
    php 开发语言
  • Go语言中使用jwt-go库实现JWT Token验证认证
    在Go语言中使用jwt-go库实现JWT Token鉴权 JWT(JSON Web Token)是一种轻量级的身份验证和授权的方式,可以帮助我们基于 JSON 格式在用户和系统之间传递安全可信的信息。在构造 ...
    99+
    2024-01-22
    Go语言 鉴权 JWT Token
  • asp.net core 中的Jwt(Json Web Token)的使用详解
    简单描述: session不支持 分布式 并且在服务器存储一份用户登录的信息,这份登录信息会在响应时传递给浏览器,告诉其保存为cookie,以便下次请求时发送给我们的应用 Jwt描述...
    99+
    2022-11-13
    asp.net core  Jwt使用 asp.net core Jwt
  • TP6 使用jwt生成token加密解密
    第一步,需要安装TP6框架,如果没有安装我给你一个composer composer create-project topthink/think tp 第二步,需要安装一个PHP的jwt插件,也使用composer composer req...
    99+
    2023-09-05
    php java 开发语言
  • 浅谈node使用jwt生成的token应该存在哪里
    答:通常存储在客户端里。 jwt 即 JSON Web Token,是一种认证协议,一般用来校验请求的身份信息和身份权限。 早上逛某乎的时候,遇到一位同学在问这个问题,很好奇jwt的...
    99+
    2024-04-02
  • golang中gin框架接入jwt使用token验证身份
    目录jwt 流程: 1.token 工具类 2. 使用该中间件 3. controller部分代码 jwt jwt的原理和session有点相像,其目的是为了解决rest api中...
    99+
    2024-04-02
  • PHP中ThinkPhp框架的token怎么用
    小编给大家分享一下PHP中ThinkPhp框架的token怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂...
    99+
    2023-06-14
  • JWT如何在nodejs中使用
    这篇文章主要介绍“JWT如何在nodejs中使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JWT如何在nodejs中使用”文章能帮助大家解决问题。什么是JWTJ...
    99+
    2024-04-02
  • jwt在node中怎么使用
    本文小编为大家详细介绍“jwt在node中怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“jwt在node中怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。导语:由...
    99+
    2024-04-02
  • Jwt如何在Java中使用
    这篇文章给大家介绍Jwt如何在Java中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. 面向对象;3. 分布性,Java是...
    99+
    2023-06-14
  • golang中gin框架接入jwt如何使用token验证身份
    本篇内容介绍了“golang中gin框架接入jwt如何使用token验证身份”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!jwtjwt的原理...
    99+
    2023-06-22
  • 使用JWT作为Spring Security OAuth2的token存储问题
    目录序授权服务器整合JWT——对称加解密算法资源服务器整合JWT——对称加解密算法OAuth整合JWT——非对称加解密RSA测试验证测试通过序 Spring Security OAu...
    99+
    2024-04-02
  • 在Java中使用Jwt的示例代码
    目录JWT 特点 1. JWT 的原理 2. JWT 的数据结构 2.1 Header 2.2 Payload 2.3 Signature 3. 在 Java 中使用 JWT 特点 ...
    99+
    2024-04-02
  • 怎么在laravel8中使用dingo与jwt鉴权
    这篇文章将为大家详细讲解有关怎么在laravel8中使用dingo与jwt鉴权,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1 什么是dingodingo api包是给laravel和lum...
    99+
    2023-06-15
  • SpringBoot-JWT生成Token和拦截器的使用(访问受限资源)
    目录1.什么是JWT2.JWT生成token2.1 添加依赖2.2 生成token2.3 使用拦截器解析token1.什么是JWT JWT官方的定义是:JSON Web令牌(JWT)...
    99+
    2024-04-02
  • 如何解决使用JWT作为Spring Security OAuth2的token存储问题
    小编给大家分享一下如何解决使用JWT作为Spring Security OAuth2的token存储问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!序Spring Security OAuth3的de...
    99+
    2023-06-22
  • thinkphp6.0.7中如何使用JWT
    本篇内容介绍了“thinkphp6.0.7中如何使用JWT”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!JWT是什么JWT是json web...
    99+
    2023-06-22
  • nodejs中如何使用JWT
    这篇“nodejs中如何使用JWT”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“nodejs中如何使用JWT”文章吧。什么是...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作