修复优化后台报错

This commit is contained in:
2026-03-06 11:34:36 +08:00
parent 01f71a4871
commit 943d8f7b5f
2 changed files with 65 additions and 27 deletions

View File

@@ -45,23 +45,48 @@ class BaseController extends OpenController
*/
protected function init(): void
{
// 登录模式赋值(仅当 check_admin 有效时赋值,避免登录接口等未带 token 时访问 null 导致报错)
$isLogin = request()->header('check_login', false);
// 登录模式赋值:优先从中间件注入的 header 取,否则从 JWT 当前用户取
$result = request()->header('check_admin');
if ($isLogin && $result !== null && (is_array($result) || is_object($result))) {
$arr = is_array($result) ? $result : (array) $result;
$adminId = $arr['id'] ?? null;
if ($adminId !== null) {
$this->adminId = (int) $adminId;
$this->adminName = $arr['username'] ?? '';
$this->adminInfo = UserInfoCache::getUserInfo($adminId);
if (!is_array($result) || empty($result['id'])) {
$result = getCurrentInfo();
}
if (is_array($result) && !empty($result['id'])) {
$this->adminId = $result['id'];
$this->adminName = $result['username'] ?? '';
$this->adminInfo = UserInfoCache::getUserInfo($result['id']);
if (empty($this->adminInfo) || !isset($this->adminInfo['id'])) {
$this->adminInfo = UserInfoCache::setUserInfo($result['id']);
}
// 用户数据传递给逻辑层
$this->logic && $this->logic->init($this->adminInfo);
// 用户数据传递给逻辑层
if ($this->logic && !empty($this->adminInfo)) {
$this->logic->init($this->adminInfo);
}
}
}
/**
* 确保当前请求已加载管理员信息(用于 init 未正确注入时的回退)
* @return bool 是否已有有效的 adminInfo
*/
protected function ensureAdminInfo(): bool
{
if ($this->adminInfo !== null && is_array($this->adminInfo) && isset($this->adminInfo['id'])) {
return true;
}
$token = getCurrentInfo();
if (!is_array($token) || empty($token['id'])) {
return false;
}
$this->adminId = $token['id'];
$this->adminName = $token['username'] ?? '';
$this->adminInfo = UserInfoCache::getUserInfo($token['id']);
if (empty($this->adminInfo) || !isset($this->adminInfo['id'])) {
$this->adminInfo = UserInfoCache::setUserInfo($token['id']);
}
return is_array($this->adminInfo) && isset($this->adminInfo['id']);
}
/**
* 验证器调用
*/