以下是一个简单的PHP接口鉴权实例,我们将使用JWT(JSON Web Tokens)进行鉴权。JWT是一种紧凑且安全的方式,用于在各方之间以JSON对象的形式安全地传输信息。

1. 准备工作

确保你的PHP环境中安装了`openssl`扩展。

实例php接口鉴权,PHP接口鉴权实例详解  第1张

2. 生成JWT

我们将创建一个函数来生成JWT。

```php

function generateJWT($data, $secretKey) {

$payload = json_encode($data);

$header = json_encode(['alg' => 'HS256', 'typ' => 'JWT']);

$base64UrlHeader = strtr(base64_encode($header), '+/', '-_');

$base64UrlPayload = strtr(base64_encode($payload), '+/', '-_');

$signature = hash_hmac('SHA256', $base64UrlHeader . '.' . $base64UrlPayload, $secretKey, true);

$base64UrlSignature = strtr(base64_encode($signature), '+/', '-_');

return $base64UrlHeader . '.' . $base64UrlPayload . '.' . $base64UrlSignature;

}

```

3. 验证JWT

接下来,我们创建一个函数来验证JWT。

```php

function verifyJWT($jwt, $secretKey) {

$parts = explode('.', $jwt);

if (count($parts) != 3) {

return false;

}

$header = base64_decode($parts[0]);

$payload = base64_decode($parts[1]);

$signature = base64_decode($parts[2]);

$calculatedSignature = hash_hmac('SHA256', $header . '.' . $payload, $secretKey, true);

if (hash_equals($calculatedSignature, $signature)) {

return json_decode($payload, true);

}

return false;

}

```

4. 使用示例

下面是一个简单的使用示例。

```php

$secretKey = 'your_secret_key';

$data = ['user_id' => 123, 'username' => 'example_user'];

$jwt = generateJWT($data, $secretKey);

echo "