Php 当';我不能通过中间件
我不知道如何描述这个主题,但我的问题是: 我有一个名为users的模型/表,它有一个名为type的字段。我制作了一个中间件,为控制器提供对特定类型的访问。当它通过中间件时,就没有问题了。但当类型不同时,会出现如下错误:Php 当';我不能通过中间件,php,laravel,Php,Laravel,我不知道如何描述这个主题,但我的问题是: 我有一个名为users的模型/表,它有一个名为type的字段。我制作了一个中间件,为控制器提供对特定类型的访问。当它通过中间件时,就没有问题了。但当类型不同时,会出现如下错误: Argument 1 passed to Illuminate\\Routing\\Middleware\\ThrottleRequests::addHeaders() must be an instance of Symfony\\Component\\HttpFoundati
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有效,请告诉我,如果它不起作用,我将使用另一个解决方案进行更新。第一个答案奏效了。我对你的答案投了赞成票。