You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Sanctum中间件返回字符串触发ThrottleRequests类型错误

Laravel Sanctum中间件返回提示信息报错解决方法

错误原因

你触发的错误提示意思是:节流中间件ThrottleRequests的addHeaders方法要求第一个参数必须是Symfony\Component\HttpFoundation\Response类型,但你返回的是字符串,类型不匹配导致报错。这是因为Laravel中间件的handle方法必须返回Response实例,不能直接返回字符串或数组。

修复方案

方案1:使用response()助手函数返回JSON响应

直接用Laravel自带的response()->json()生成标准的Response实例,适配API场景:

public function handle(Request $request, Closure $next)
{
    $user = auth()->user();
    if ($user->mobile_verified != 1) {
        return response()->json([
            'success' => false,
            'code' => 400,
            'message' => '请验证您的手机号',
            'data' => null
        ], 400);
    }
    return $next($request);
}

方案2:修复自定义APIHelper的响应方法

如果要使用你注释掉的APIHelper::ApiResponse,需要确保这个方法返回的是Response实例,而不是原始数组或字符串。修改APIHelper类的方法:

class APIHelper
{
    public static function ApiResponse($success, $code, $message, $data)
    {
        // 封装成Response实例返回
        return response()->json([
            'success' => $success,
            'code' => $code,
            'message' => $message,
            'data' => $data
        ], $code);
    }
}

之后在中间件中正常调用即可:

public function handle(Request $request, Closure $next)
{
    $user = auth()->user();
    if ($user->mobile_verified != 1) {
        return APIHelper::ApiResponse(false, 400, '请验证您的手机号', null);
    }
    return $next($request);
}

内容的提问来源于stack exchange,提问作者TechRian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 21:25:37