pathinfo(); $controller = $request->controller(true); $action = $request->action(true); // 判断是否为API请求 // 1. 路径包含 /crawler/ 且不是 /crawler 本身 // 2. 或者是 crawler 控制器的非 index 方法 // 3. 或者是AJAX请求 $isApiRequest = ($pathinfo !== 'crawler' && strpos($pathinfo, 'crawler/') === 0) || ($controller === 'crawler' && $action !== 'index') || $request->isAjax() || $request->header('X-Requested-With') === 'XMLHttpRequest'; if (empty($username)) { // 如果是API请求,返回JSON if ($isApiRequest) { // 直接返回JSON,ThinkPHP的json()函数会自动设置响应头 return json([ 'code' => 0, 'msg' => '请先登录', ]); } // 否则跳转到登录页 return redirect('/login'); } return $next($request); } }