From 18ba49e1c500f7d94b8dd0c0542642ae4f5a14c9 Mon Sep 17 00:00:00 2001 From: augushong Date: Mon, 14 Apr 2025 19:58:41 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E4=BF=A1=E6=81=AF=E7=8A=B6=E6=80=81=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E5=86=99=E6=B3=95=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- extend/base/admin/controller/AjaxBase.php | 6 ++-- extend/base/admin/controller/IndexBase.php | 8 +++--- extend/base/admin/controller/LoginBase.php | 2 +- .../common/controller/AdminControllerBase.php | 19 +++---------- extend/base/helper.php | 28 ++++++++++++++++++- 5 files changed, 39 insertions(+), 24 deletions(-) diff --git a/extend/base/admin/controller/AjaxBase.php b/extend/base/admin/controller/AjaxBase.php index 1856387..6d7dcd7 100644 --- a/extend/base/admin/controller/AjaxBase.php +++ b/extend/base/admin/controller/AjaxBase.php @@ -21,11 +21,11 @@ class AjaxBase extends AdminController */ public function initAdmin() { - $cacheData = Cache::get('initAdmin_' . session('admin.id')); + $cacheData = Cache::get('initAdmin_' . $this->sessionAdmin->id); if (!empty($cacheData)) { return json($cacheData); } - $menuService = new MenuService(session('admin.id')); + $menuService = new MenuService($this->sessionAdmin->id); $data = [ 'logoInfo' => [ 'title' => sysconfig('site', 'logo_title'), @@ -35,7 +35,7 @@ class AjaxBase extends AdminController 'homeInfo' => $menuService->getHomeInfo(), 'menuInfo' => $menuService->getMenuTree(), ]; - Cache::tag('initAdmin')->set('initAdmin_' . session('admin.id'), $data); + Cache::tag('initAdmin')->set('initAdmin_' . $this->sessionAdmin->id, $data); return json($data); } diff --git a/extend/base/admin/controller/IndexBase.php b/extend/base/admin/controller/IndexBase.php index 857b211..30d517e 100644 --- a/extend/base/admin/controller/IndexBase.php +++ b/extend/base/admin/controller/IndexBase.php @@ -19,7 +19,7 @@ class IndexBase extends AdminController public function index() { return $this->fetch('', [ - 'admin' => session('admin'), + 'admin' => $this->sessionAdmin, ]); } @@ -50,7 +50,7 @@ class IndexBase extends AdminController */ public function editAdmin() { - $id = session('admin.id'); + $id = $this->sessionAdmin->id; $row = (new SystemAdmin()) ->withoutField('password') ->find($id); @@ -96,7 +96,7 @@ class IndexBase extends AdminController */ public function editPassword() { - $id = session('admin.id'); + $id = $this->sessionAdmin->id; $row = (new SystemAdmin()) ->withoutField('password') ->find($id); @@ -140,7 +140,7 @@ class IndexBase extends AdminController { $pid = $this->request->param('pid', 0); - $menuService = new MenuService(session('admin.id')); + $menuService = new MenuService($this->sessionAdmin->id); $home_info = $menuService->getHomeInfo(); diff --git a/extend/base/admin/controller/LoginBase.php b/extend/base/admin/controller/LoginBase.php index 88ff7da..f405a07 100644 --- a/extend/base/admin/controller/LoginBase.php +++ b/extend/base/admin/controller/LoginBase.php @@ -22,7 +22,7 @@ class LoginBase extends AdminController { parent::initialize(); $action = $this->request->action(); - if (!empty(session('admin')) && !in_array($action, ['out'])) { + if (!empty($this->sessionAdmin) && !in_array($action, ['out'])) { $adminModuleName = config('app.admin_alias_name'); $this->success('已登录,无需再次登录', [], __url("@{$adminModuleName}")); } diff --git a/extend/base/common/controller/AdminControllerBase.php b/extend/base/common/controller/AdminControllerBase.php index 787ff40..8aa3d9e 100644 --- a/extend/base/common/controller/AdminControllerBase.php +++ b/extend/base/common/controller/AdminControllerBase.php @@ -121,8 +121,8 @@ class AdminControllerBase extends BaseController parent::initialize(); $this->layout && $this->app->view->engine()->layout($this->layout); $this->isDemo = Env::get('adminsystem.is_demo', false); - $this->viewInit(); $this->checkAuth(); + $this->viewInit(); $this->initSort(); } @@ -437,7 +437,7 @@ class AdminControllerBase extends BaseController $autoloadJs = file_exists(root_path('public') . "static/{$thisModule}/js/{$jsPath}.js") ? true : false; $thisControllerJsPath = "{$thisModule}/js/{$jsPath}.js"; $adminModuleName = config('app.admin_alias_name'); - $isSuperAdmin = session('admin.id') == AdminConstant::SUPER_ADMIN_ID ? true : false; + $isSuperAdmin = $this->sessionAdmin->id == AdminConstant::SUPER_ADMIN_ID ? true : false; $data = [ 'adminModuleName' => $adminModuleName, 'thisController' => parse_name($thisController), @@ -462,13 +462,7 @@ class AdminControllerBase extends BaseController protected function checkAuth($currentNode = null, $haltRequest = true) { $adminConfig = config('admin'); - - $token = $this->readHeaderToken(); - if (!empty($token)) { - $admin = Cache::get($token); - } else { - $admin = session('admin'); - } + $admin = get_session_admin(); $back_url = $this->request->url(); @@ -528,12 +522,7 @@ class AdminControllerBase extends BaseController } protected function readHeaderToken(){ - $header_authorization = $this->request->header('Authorization'); - if (!empty($header_authorization)) { - $token = explode(' ', $header_authorization)[1]; - return $token; - } - return null; + return read_header_token(); } /** diff --git a/extend/base/helper.php b/extend/base/helper.php index fc5bbe5..9f0ec7f 100644 --- a/extend/base/helper.php +++ b/extend/base/helper.php @@ -12,6 +12,8 @@ use think\facade\Cache; use think\facade\Env; use think\facade\Event; use think\facade\Filesystem; +use think\facade\Request; +use think\helper\Arr; use think\response\View; use think\route\Url; @@ -175,13 +177,37 @@ if (!function_exists('auth')) { */ function auth($node = null) { - $authService = new AuthService(session('admin.id')); + $authService = new AuthService(get_session_admin('id')); $check = $authService->checkNode($node); return $check; } } +function get_session_admin($key = null) +{ + $token = read_header_token(); + if (!empty($token)) { + $admin = Cache::get($token); + } else { + $admin = session('admin'); + } + + return Arr::get($admin, $key); +} + +function read_header_token() +{ + $header_authorization = Request::header('Authorization'); + if (!empty($header_authorization)) { + $token = explode(' ', $header_authorization)[1]; + + return $token; + } + + return null; +} + function json_message($data = [], $code = 0, $msg = '') { if (is_string($data)) {