getApp(); $controller = request()->getController(); $action = request()->getAction(); $method = $controller . '/' . $action; $className = '\app' . $app . '\\controller\\' . $controller; $className = str_replace('/', '\\', $className); if (class_exists($className)) { $refClass = new \ReflectionClass($className); $property = $refClass->getDefaultProperties(); $this->needLogin = $property['needLogin'] ?? false; $this->noNeedAuth = $property['noNeedAuth'] ?? []; } $auth = Auth::instance(); if ($auth->isLogin()) { $request->user_id = $auth->userData['id']; $request->userData = $auth->userData; if ($this->authWorkflow && Event::hasListener('apiAuth')) { $result = Event::emit('apiAuth', ['method' => $method, 'user_id' => $request->user_id], true); if (isset($result['code']) && $result['code'] != 200) { return json($result); } } } else { if ($this->needLogin && !in_array($action, $this->noNeedAuth)) { return json(ResultCode::AUTH_ERROR); } } return $handler($request); } }