要发布新令牌,您必须创建一个新令牌(使用[配置](%E9%85%8D%E7%BD%AE.md)时更容易),自定义它,并要求它构建令牌:
~~~php
use Lcobucci\JWT\Configuration;
$config = $container->get(Configuration::class);
assert($config instanceof Configuration);
$now = new DateTimeImmutable();
$token = $config->builder()
// 配置颁发者(iss声明)
->issuedBy('http://example.com')
// 配置访问群体(aud声明)
->permittedFor('http://example.org')
// 配置id(jti声明)
->identifiedBy('4f1g23a12aa')
// 配置令牌发出的时间(iat声明)
->issuedAt($now)
// 配置可使用令牌的时间(nbf声明)
->canOnlyBeUsedAfter($now->modify('+1 minute'))
// 配置令牌的过期时间(exp声明)
->expiresAt($now->modify('+1 hour'))
// 配置名为“username”的新声明
->withClaim('username', "admin")
// 配置名为“foo”的新请求头
->withHeader('foo', 'bar')
// 构建一个新令牌
->getToken($config->signer(), $config->signingKey());
~~~
创建令牌后,您就可以检索其数据并将其转换为字符串表示形式:
~~~php
use Lcobucci\JWT\Configuration;
$config = $container->get(Configuration::class);
assert($config instanceof Configuration);
$token = $config->builder()
->issuedBy('http://example.com')
->withClaim('uid', 1)
->withHeader('foo', 'bar')
->getToken($config->signer(), $config->signingKey());
$token->headers(); // /检索 headers
$token->claims(); // /检索声明
echo $token->headers()->get('foo'); // will print "bar"
echo $token->claims()->get('iss'); // will print "http://example.com"
echo $token->claims()->get('uid'); // will print "1"
echo $token->toString(); // 字符串表示形式JWT字符串
~~~
# 实例
~~~
<?php
require 'vendor/autoload.php';
use Lcobucci\JWT\Configuration;
use Lcobucci\JWT\Signer\Hmac\Sha256;
use Lcobucci\JWT\Signer\Key\InMemory;
$config = Configuration::forSymmetricSigner(
//您可以使用任何HMAC变体(256、384和512)
new Sha256(),
// 用您自己的密钥替换下面的值!
InMemory::base64Encoded('mBC5v1sOKVvbdEitdSBenu59nfNfhwkedkJVNabosTw=')
// 您还可以通过在此处提供额外参数来覆盖JOSE编码器/解码器
);
assert($config instanceof Configuration);
$now = new DateTimeImmutable();
$token = $config->builder()
// 配置颁发者(iss声明)
->issuedBy('http://example.com')
// 配置访问群体(aud声明)
->permittedFor('http://example.org')
// 配置id(jti声明)
->identifiedBy('4f1g23a12aa')
// 配置令牌发出的时间(iat声明)
->issuedAt($now)
// 配置可使用令牌的时间(nbf声明)
->canOnlyBeUsedAfter($now->modify('+1 minute'))
// 配置令牌的过期时间(exp声明)
->expiresAt($now->modify('+1 hour'))
// 配置名为“username”的新声明
->withClaim('username', "admin")
// 配置名为“foo”的新请求头
->withHeader('foo', 'bar')
// 构建一个新令牌
->getToken($config->signer(), $config->signingKey());
var_dump($token->toString());
// string(319) "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsImZvbyI6ImJhciJ9.eyJpc3MiOiJodHRwOi8vZXhhbXBsZS5jb20iLCJhdWQiOiJodHRwOi8vZXhhbXBsZS5vcmciLCJqdGkiOiI0ZjFnMjNhMTJhYSIsImlhdCI6MTYyODczNTUxOC4wMjczODYsIm5iZiI6MTYyODczNTU3OC4wMjczODYsImV4cCI6MTYyODczOTExOC4wMjczODYsInVzZXJuYW1lIjoiYWRtaW4ifQ.JiRuboBISaDDEW7d3TPpeZ-pjeJTJM3AcScfrcFX\_do"
~~~
- 序言
- ThinkPHP官方资源
- 术语
- 根目录
- php术语
- jwt
- 下载jwt
- 认识jwt
- 生成token
- 验证token
- lcobucci/jwt
- 安装
- 配置
- 生成token
- 解析令牌
- 验证令牌
- 扩展库jwt
- thinkPHP使用lcobucci/jwt
- phpmailer
- PHPMailer的使用
- phpMailer config
- 短信验证吗
- 阿里云短信验证码发送类
- 权限管理
- 基于thinkphp6.0
- 通用函数
- 密码加密
- 数组
- 数据库
- 查询数据
- 添加数据
- 删除数据
- 批量删除
- 更新数据
- 请求流程
- thinkphp6安装
- thinkphp6目录介绍
- 单应用
- 多应用
- 配置文件
- 模型,模板与Model的区别
- .env介绍
- 入口文件
- 控制器
- model层
- 视图层
- common公共函数
- 路由
- 命令行
- 常用thinkphp函数和方法
- 高德地图i定位城市
- 更新日志