# 验证令牌
*此处的示例从假设的依赖注入容器中获取配置对象。您可以在同一个脚本中创建它或从不同的文件中要求它。它基本上取决于您的系统是如何引导的。*
要验证令牌,您必须创建一个新的验证器(使用[配置对象时更容易)并断言或验证令牌。
## 使用`Lcobucci\JWT\Validator#assert()`
**警告**
你**必须**至少提供一个约束,否则`\Lcobucci\JWT\Validation\NoConstraintsGiven`会抛出异常。
此方法遍历集合中的每个约束,将所有违规分组,并使用分组违规引发异常:
~~~php
use Lcobucci\JWT\Configuration;
use Lcobucci\JWT\UnencryptedToken;
use Lcobucci\JWT\Validation\RequiredConstraintsViolated;
$config = $container->get(Configuration::class);
assert($config instanceof Configuration);
$token = $config->parser()->parse('...');
assert($token instanceof UnencryptedToken);
$constraints = $config->validationConstraints();
try {
$config->validator()->assert($token, ...$constraints);
} catch (RequiredConstraintsViolated $e) {
var_dump($e->violations());
}
~~~
## 使用`Lcobucci\JWT\Validator#validate()`
**警告**
你**必须**至少提供一个约束,否则`\Lcobucci\JWT\Validation\NoConstraintsGiven`会抛出异常。
这里的区别在于我们总是会得到`boolean`结果并在第一次违规时停止:
~~~php
use Lcobucci\JWT\Configuration;
use Lcobucci\JWT\UnencryptedToken;
$config = $container->get(Configuration::class);
assert($config instanceof Configuration);
$token = $config->parser()->parse('...');
assert($token instanceof UnencryptedToken);
$constraints = $config->validationConstraints();
if (! $config->validator()->validate($token, ...$constraints)) {
throw new RuntimeException('No way!');
}
~~~
## 可用约束
该库提供以下约束:
* `Lcobucci\JWT\Validation\Constraint\IdentifiedBy`: 验证声明是否`jti`与预期值匹配
* `Lcobucci\JWT\Validation\Constraint\IssuedBy`: 验证声明`iss`是否被列为预期值
* `Lcobucci\JWT\Validation\Constraint\PermittedFor`: 验证声明是否`aud`包含预期值
* `Lcobucci\JWT\Validation\Constraint\RelatedTo`: 验证声明是否`sub`与预期值匹配
* `Lcobucci\JWT\Validation\Constraint\SignedWith`: 验证令牌是否使用预期的签名者和密钥签名
* `Lcobucci\JWT\Validation\Constraint\StrictValidAt`: 验证声明的存在和有效性`iat`,`nbf`, and`exp`(支持 leeway 配置)
* `Lcobucci\JWT\Validation\Constraint\LooseValidAt`: 验证声明`iat`,`nbf`, and`exp`, 当存在时(支持 leeway 配置)
您还可以创建自己的验证约束
- 序言
- 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定位城市
- 更新日志