ThinkPHP6使用JWT+中间件实现Token验证
// 在ThinkPHP6中使用JWT实现Token验证的示例
// 引入JWT类库,确保已通过Composer安装了jwt-auth库
use Firebase\JWT\JWT;
// 定义中间件类
class JwtMiddleware
{
public function handle($request, \Closure $next)
{
// 获取请求头中的Token
$token = $request->header('Token');
// 如果没有Token,返回错误信息
if (empty($token)) {
return json(['code' => 401, 'msg' => 'Token不存在']);
}
// 尝试解析Token
try {
JWT::decode($token, config('jwt.key'), [config('jwt.alg')]);
} catch (\Exception $e) {
// 当Token无效或过期时,返回错误信息
return json(['code' => 401, 'msg' => 'Token无效或已过期']);
}
// Token有效,继续请求处理
return $next($request);
}
}
// 在全局中间件配置文件中注册中间件
// 文件路径:application/middleware.php
return [
// 中间件别名 => 中间件路径
'jwt' => \app\middleware\JwtMiddleware::class
];
// 在控制器中使用中间件
// 文件路径:application/controller/Index.php
namespace app\controller;
use think\middleware\Jwt as JwtMiddleware;
class Index
{
protected $middleware = [
JwtMiddleware::class => ['only' => ['index']]
];
public function index()
{
return 'Index page with JWT authentication';
}
}
这个示例展示了如何在ThinkPHP6框架中创建一个JWT中间件来验证Token的有效性,并在控制器中使用该中间件。在实际应用中,你需要配置JWT密钥和算法,并确保已经通过Composer安装了firebase/php-jwt
库。
评论已关闭