本文目录 一、什么是 JWT二、在 ThinkPHP 中安装 JWT三、签发 Token 示例四、使用 Token 示例 一、什么是 Jwt JWT,全称:JSON WEB To
JWT
,全称:JSON WEB Token
,可以看成是一种 Token
签发方案。
Token
通常叫做认证令牌,用于客户端和服务端在交互时的身份认证。
JWT
的优势:
json
数据格式,可跨语言。先去官网挑选适合自己项目的库。
进入官网,选择 Libraries
,选择 php
语言过滤。
每个库都有对应的 composer
命令。
这里选择第一个,在 ThinkPHP
项目根目录下执行命令安装:
composer require firebase/php-jwt
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
生成 token
时JWT
提供了以下字段可以选择:
iss:发行者exp:到期时间sub:主题aud:用户nbf:生效时间iat:发布时间jti:JWT的ID,用于标识该JWT
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
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0