tp5使用jwt
时间: 2023-06-28 16:08:48 浏览: 185
在TP5中使用JWT(Json Web Token),可以通过引入第三方库 `firebase/php-jwt` 来实现。具体步骤如下:
1. 使用 Composer 安装 `firebase/php-jwt` 库:
```
composer require firebase/php-jwt
```
2. 在 `config` 目录下创建 `jwt.php` 配置文件,配置 JWT 的加密算法、密钥等信息,例如:
```php
<?php
return [
// 加密算法
'alg' => 'HS256',
// 密钥
'key' => 'your_secret_key',
// 过期时间(单位:秒)
'exp' => 3600,
];
```
3. 在需要使用 JWT 的控制器中,引入 `firebase/php-jwt` 库,通过 `jwt_encode` 函数生成 JWT token,例如:
```php
<?php
namespace app\index\controller;
use Firebase\JWT\JWT;
class Index
{
public function login()
{
$user = [
'id' => 1,
'username' => 'test',
];
$jwt = JWT::encode($user, config('jwt.key'), config('jwt.alg'));
return json(['token' => $jwt]);
}
}
```
4. 在需要验证 JWT 的接口中,通过 `jwt_decode` 函数验证 JWT token,例如:
```php
<?php
namespace app\index\controller;
use Firebase\JWT\JWT;
class Index
{
public function profile()
{
$token = request()->header('Authorization');
if (!$token) {
return json(['code' => 401, 'msg' => 'Unauthorized']);
}
try {
$decoded = JWT::decode($token, config('jwt.key'), [config('jwt.alg')]);
return json(['user' => $decoded]);
} catch (\Firebase\JWT\ExpiredException $e) {
return json(['code' => 401, 'msg' => 'Token expired']);
} catch (\Exception $e) {
return json(['code' => 401, 'msg' => 'Invalid token']);
}
}
}
```
以上就是在TP5中使用JWT的基本步骤。需要注意的是,JWT是无状态的,每次请求都需要携带 token 进行验证。
阅读全文