https://github.com/imiphp/imi-jwt
在 imi 框架中非常方便地接入 jwt
https://github.com/imiphp/imi-jwt
Last synced: 11 months ago
JSON representation
在 imi 框架中非常方便地接入 jwt
- Host: GitHub
- URL: https://github.com/imiphp/imi-jwt
- Owner: imiphp
- License: mit
- Created: 2020-01-02T03:08:19.000Z (over 6 years ago)
- Default Branch: 2.0
- Last Pushed: 2023-12-29T07:19:33.000Z (over 2 years ago)
- Last Synced: 2025-06-19T12:54:02.331Z (12 months ago)
- Language: PHP
- Homepage: https://imiphp.com
- Size: 206 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# imi-jwt
[](https://packagist.org/packages/imiphp/imi-jwt)
[](https://secure.php.net/)
[](https://github.com/swoole/swoole-src)
[](https://github.com/imiphp/imi-jwt/blob/master/LICENSE)
## 介绍
在 imi 框架中非常方便地接入 jwt
> 本仓库仅用于浏览,不接受 issue 和 Pull Requests,请前往:
## Composer
本项目可以使用composer安装,遵循psr-4自动加载规则,在你的 `composer.json` 中加入下面的内容:
```json
{
"require": {
"imiphp/imi-jwt": "~2.0.0"
}
}
```
然后执行 `composer update` 安装。
## 使用
在项目 `config/config.php` 中配置:
```php
[
'components' => [
// 引入本组件
'jwt' => 'Imi\JWT',
],
]
```
### 配置
配置 `@app.beans`:
```php
[
'JWT' => [
'list' => [
// a 为名称,可以自定义,以下被注释的项为非必设,一般有默认值
'a' => [
// 'signer' => 'Hmac', // 签名者,可选:Ecdsa/Hmac/Rsa
// 'algo' => 'Sha256', // 算法,可选:Sha256/Sha384/Sha512
// 'dataName' => 'data', // 自定义数据字段名,放你需要往token里丢的数据
// 'audience' => null, // 接收,非必须
// 'subject' => null, // 主题,非必须
// 'expires' => null, // 超时秒数,非必须
// 'issuer' => null, // 发行人,非必须
// 'notBefore' => null, // 实际日期必须大于等于本值
// 'issuedAt' => true, // JWT 发出时间。设为 true 则为当前时间;设为 false 不设置;其它值则直接写入
// 'id' => null, // Token id
// 'headers' => [], // 头
// 自定义获取 token 回调,返回值为 Token。默认从 Header Authorization 中获取。
// 'tokenHandler' => null,
'privateKey' => '123456',// 私钥
'publicKey' => '123456',// 公钥
],
],
],
]
```
### 生成 Token
简单生成:
```php
use \Imi\JWT\Facade\JWT;
// 你需要往token里丢的数据
$data = [
'memberId' => 19260817,
];
$token = JWT::getToken($data); // Token 对象
$tokenContent = $token->__toString(); // Token 字符串
```
指定名称:
```php
use \Imi\JWT\Facade\JWT;
// 你需要往token里丢的数据
$data = [
'memberId' => 19260817,
];
$token = JWT::getToken($data, 'a'); // Token 对象
$tokenContent = $token->__toString(); // Token 字符串
```
自定义处理:
```php
use \Imi\JWT\Facade\JWT;
// 你需要往token里丢的数据
$data = [
'memberId' => 19260817,
];
$token = JWT::getToken($data, 'a', function(\Lcobucci\JWT\Builder $builder){
// 可以针对该对象做一些操作
$builder->withClaim('aaa', 'bbb');
}); // Token 对象
$tokenContent = $token->__toString(); // Token 字符串
```
### 验证 Token
手动验证:
```php
use \Imi\JWT\Facade\JWT;
/** @var \Lcobucci\JWT\Token $token */
$token = JWT::parseToken($jwt); // 仅验证是否合法
// $token = JWT::parseToken($jwt, 'a'); // 指定配置名称
$data = $token->getClaim('data'); // 获取往token里丢的数据
// 验证有效期、id、issuer、audience、subject
$validationData = new \Lcobucci\JWT\ValidationData;
$validationData->setId('');
$validationData->setIssuer('');
$validationData->setAudience('');
$validationData->setSubject('');
if($token->validate($validationData))
{
// 合法
}
else
{
// 不合法
}
```
注解验证:
```php
= 7.4
- [Composer](https://getcomposer.org/) >= 2.0
- [Swoole](https://www.swoole.com/) >= 4.1.0
## 版权信息
`imi-jwt` 遵循 MIT 开源协议发布,并提供免费使用。
## 捐赠

开源不求盈利,多少都是心意,生活不易,随缘随缘……