首页 > 解决方案 > 未通过中间件时来自节流请求的 TypeError

问题描述

我不知道如何描述这个主题,但这是我的问题:

我有一个名为 users 的模型/表,它有一个名为 type 的字段。我制作了一个中间件,让控制器可以访问特定类型。当它通过中间件时,没有问题。但是当类型不同时,它会给出如下错误:

Argument 1 passed to Illuminate\\Routing\\Middleware\\ThrottleRequests::addHeaders() must be an instance of Symfony\\Component\\HttpFoundation\\Response, string given, called in C:\\xampp\\htdocs\\app\\Http\\Middleware\\ThrottleRequests.php on line 3

问题是,这给了我一个 typeError,它不是我表中的类型字段。我试图更改字段名称,以防您认为这是关于我的字段名称。

ps:我没有做其他任何事情,只是我没有尝试修改节流中间件的默认类。

ps:我使用的中间件是:

'support' => [
    'auth:api',
    'customMiddleware',
]

更新:

客户中间件:

 * @param  \Illuminate\Http\Request  $request
 * @param  \Closure  $next
 * @return mixed
 */
public function handle($request, Closure $next)
{
    $user = Auth::user();
    $AccessLevel = 2;
    if($user->type >= $AccessLevel){
        return $next($request);
    }

    return "UnAuthorized";
}

标签: phplaravel

解决方案


您可能自动导入了错误的响应类。

在 ThrottleRequests.php 中

你可能有:

use Symfony\Component\HttpFoundation\Response;

将其替换为:

use Illuminate\Http\Response;

分享您的代码会有所帮助,人们确实会回答。

不要返回一个字符串,这不是预期的返回类型:

 throw new UnauthorizedHttpException('Some message')

推荐阅读