tp6 jwt 使用
时间: 2024-03-02 18:47:20 浏览: 213
TP6中使用JWT的方法如下所示[^1][^2]:
1. 首先,使用Composer安装JWT库:
```shell
composer require firebase/php-jwt
```
2. 在TP6的配置文件`config/jwt.php`中,配置JWT的相关参数,例如密钥、过期时间等:
```php
return [
// 密钥
'secret' => 'your-secret-key',
// 过期时间(单位:分钟)
'expire' => 60,
];
```
3. 创建一个JWT工具类,例如`app\utils\JwtUtil.php`,用于生成和验证JWT:
```php
<?php
namespace app\utils;
use Firebase\JWT\JWT;
use think\facade\Config;
class JwtUtil
{
// 生成JWT
public static function generateToken($data)
{
$config = Config::get('jwt');
$payload = [
'iss' => 'your-issuer',
'aud' => 'your-audience',
'iat' => time(),
'exp' => time() + $config['expire'] * 60,
'data' => $data,
];
$token = JWT::encode($payload, $config['secret']);
return $token;
}
// 验证JWT
public static function verifyToken($token)
{
$config = Config::get('jwt');
try {
$decoded = JWT::decode($token, $config['secret'], ['HS256']);
return $decoded->data;
} catch (\Exception $e) {
return false;
}
}
}
```
4. 在需要使用JWT的地方,调用`JwtUtil`类的方法进行生成和验证JWT:
```php
<?php
namespace app\controller;
use app\utils\JwtUtil;
class UserController
{
// 生成JWT
public function generateJwt()
{
$data = [
'user_id' => 1,
'username' => 'admin',
];
$token = JwtUtil::generateToken($data);
return $token;
}
// 验证JWT
public function verifyJwt($token)
{
$data = JwtUtil::verifyToken($token);
if ($data) {
// 验证通过
return $data;
} else {
// 验证失败
return 'Invalid token';
}
}
}
```
以上是TP6中使用JWT的方法,通过配置文件和自定义的JWT工具类,可以方便地生成和验证JWT。
阅读全文