Files
hyperf_test/app/Aspect/Test/Proxy/SecurityAspect.php
2025-09-07 12:17:43 +08:00

53 lines
1.2 KiB
PHP

<?php
namespace App\Aspect\Test\Proxy;
use App\Service\Test\Proxy\Payment\PaymentService;
use Hyperf\Di\Annotation\Aspect;
use Hyperf\Di\Annotation\Inject;
use Hyperf\Di\Aop\AbstractAspect;
use Hyperf\Di\Aop\ProceedingJoinPoint;
use Hyperf\Di\Exception\Exception;
use Hyperf\HttpServer\Request;
use RuntimeException;
#[Aspect]
class SecurityAspect extends AbstractAspect
{
/**
* @var Request
*/
#[Inject]
protected Request $request;
/**
* @var array|string[]
*/
public array $classes = [
PaymentService::class , '::pay',
];
/**
* 安全验证切面
* @param ProceedingJoinPoint $proceedingJoinPoint
* @return mixed
* @throws Exception
*/
public function process(ProceedingJoinPoint $proceedingJoinPoint): mixed
{
$token = $this->request->header('Authorization');
if (!$this->validateToken($token)) throw new RuntimeException('Unauthorized');
return $proceedingJoinPoint->process();
}
/**
* @param string|null $token
* @return bool
*/
private function validateToken(?string $token): bool
{
return $token !== 'valid-token';
}
}