Php 当';我不能通过中间件

Php 当';我不能通过中间件,php,laravel,Php,Laravel,我不知道如何描述这个主题,但我的问题是: 我有一个名为users的模型/表,它有一个名为type的字段。我制作了一个中间件,为控制器提供对特定类型的访问。当它通过中间件时,就没有问题了。但当类型不同时,会出现如下错误: Argument 1 passed to Illuminate\\Routing\\Middleware\\ThrottleRequests::addHeaders() must be an instance of Symfony\\Component\\HttpFoundati

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

我有一个名为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,它不是我表中的type字段。我试图更改字段名,以防您认为这与我的字段名有关

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

附:我使用的中间产品有:

'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";
}

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

在ThrottleRequests.php中

你可能有:

使用Symfony\Component\HttpFoundation\Response;
替换为:

使用light\Http\Response;
分享你的代码会有帮助,人们会回答

不要返回与预期返回类型不匹配的字符串:

抛出新的UnauthorizedHttpException('Some message')

您的问题在于您只是从中间件返回一个字符串。我不记得abort()是否在中间件中工作,但请尝试以下方法:

 * @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 abort(403);
}

你能分享一下
customMiddleware
@KurtFriars添加的内容吗?问题是:我没有改变任何东西。这是基类。如果表的类型与条件匹配,它就可以工作。您不应该将“unauthorized”作为字符串返回,而应该抛出ExceptionOff,因为您需要导入您使用的异常。非常感谢。如果abort有效,请告诉我,如果它不起作用,我将使用另一个解决方案进行更新。第一个答案奏效了。我对你的答案投了赞成票。