## 一、环境准备
要开始我们的实现,首先确保你有一个可以运行 PHP 的环境,比如本地开发环境(如 XAMPP、MAMP 或 WAMP)或者一个在线服务。
### 1. 安装 Composer
我们将使用 Composer 来安装依赖的库,主要是 `firebase/php-jwt`,这个库非常可靠且功能强大。
打开你的命令行工具,导航到项目目录,然后运行以下命令:
```bash
composer require firebase/php-jwt
```
### 2. 创建基础文件结构
在你的项目文件夹中,创建以下基本结构:
```
/tokenim/
├── index.php
├── config.php
├── jwt_helper.php
```
- **index.php**:主要的入口文件。
- **config.php**:配置文件,存放数据库连接和其他设置。
- **jwt_helper.php**:用于生成和验证 JWT 的辅助文件。
## 二、编写配置文件
在 `config.php` 中,添加数据库连接和密钥信息:
```php
PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
$secret_key = 'your_secret_key'; // 用于JWT签名
```
## 三、JWT辅助类
现在在 `jwt_helper.php` 中,我们来实现生成和验证 JWT 的逻辑。
```php
secret_key = $secret_key;
}
public function generateToken($user_id, $expiry_time = 3600) {
$issued_at = time();
$expiration_time = $issued_at $expiry_time;
$payload = [
'iat' => $issued_at,
'exp' => $expiration_time,
'sub' => $user_id
];
return JWT::encode($payload, $this->secret_key);
}
public function validateToken($token) {
try {
$decoded = JWT::decode($token, $this->secret_key, ['HS256']);
return $decoded;
} catch (Exception $e) {
return null; // Token无效或已经过期
}
}
}
```
## 四、编写入口文件
接下来,我们来实现用户登录,并根据用户信息生成一个 JWT。在 `index.php` 中添加以下代码:
```php