update backend p20.1 p20.2
This commit is contained in:
@@ -12,10 +12,12 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Controller;
|
||||
|
||||
use App\Model\User;
|
||||
use Hyperf\Di\Annotation\Inject;
|
||||
use Hyperf\HttpServer\Contract\RequestInterface;
|
||||
use Hyperf\HttpServer\Contract\ResponseInterface;
|
||||
use Psr\Container\ContainerInterface;
|
||||
use Qbhy\HyperfAuth\AuthManager;
|
||||
|
||||
abstract class AbstractController
|
||||
{
|
||||
@@ -27,4 +29,27 @@ abstract class AbstractController
|
||||
|
||||
#[Inject]
|
||||
protected ResponseInterface $response;
|
||||
|
||||
/**
|
||||
* 统一获取当前认证用户
|
||||
*
|
||||
* 优先从 request attribute 获取(JWT/API Key 中间件统一设置),
|
||||
* 兜底通过 JWT guard 获取(过渡期兼容)。
|
||||
*/
|
||||
protected function getAuthUser(): ?User
|
||||
{
|
||||
$user = $this->request->getAttribute('auth_user');
|
||||
if ($user instanceof User) {
|
||||
return $user;
|
||||
}
|
||||
|
||||
// 兜底:直接通过 JWT guard 获取
|
||||
try {
|
||||
$auth = $this->container->get(AuthManager::class);
|
||||
$user = $auth->guard('jwt')->user();
|
||||
return $user instanceof User ? $user : null;
|
||||
} catch (\Throwable) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user