Files
mini_tp/app/api/middleware/Auth.php
T
2026-04-17 07:48:44 +00:00

45 lines
948 B
PHP

<?php
declare(strict_types=1);
namespace app\api\middleware;
use app\api\common\Jwt;
use app\api\common\Response;
/**
* JWT 认证中间件
*/
class Auth
{
/**
* 处理请求
* @param \think\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, \Closure $next)
{
// 获取 Token
$token = Jwt::getTokenFromRequest();
if (!$token) {
return Response::error('未提供认证令牌', 401);
}
// 验证 Token
$payload = Jwt::decode($token);
if (!$payload) {
return Response::error('令牌无效或已过期', 401);
}
// 将用户信息写入请求中间件上下文,供控制器统一读取
$request->withMiddleware([
'payload' => $payload,
'userid' => (int) ($payload['userid'] ?? 0),
]);
return $next($request);
}
}