我的项目中有这个中间件,有时,它会给我的实时服务器带来一些问题,我不知道为什么,但只是有时,而不是每次都会触发它。这是错误:
Symfony\Component\HttpFoundation\Response::setContent(): Argument #1 ($content) must be of type ?string, Illuminate\Routing\Redirector given
错误是由
return $next($request);
触发的,下面是我的中间件:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Models\Event;
class EventOwner
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
if(isset($request["id_event"])){
$event_id = $request["id_event"];
$events = Event::where('id', $event_id)->where('user_id', Auth::user()->id)->first();
if(isset($events)){
if($events->id == $event_id){
return $next($request);
}else{
$message = '401 - NOT AUTHORIZED';
return response(view('errors.not-auth', compact('message')), 401);
}
}else{
$message = '401 - NOT AUTHORIZED';
return response(view('errors.not-auth', compact('message')), 401);
}
}
}
}
我已经将返回更改为
return redirect()->route('register');
,以返回重定向器对象,但什么也没发生。
我也尝试改进我的代码,我将代码更改为:
public function handle(Request $request, Closure $next)
{
$event_id = $request["id_event"];
if (!$event_id) {
abort(404);
}
$events = Event::where('id', $event_id)->where('user_id', Auth::user()->id)->first();
if ($events->isEmpty()) {
$message = '401 - NOT AUTHORIZED';
return response()->view('errors.not-auth', compact('message'), 401); // Create response with error view
}
return $next($request);
}
虽然这是一个很好的改进,但我仍然不知道如何复制错误,或者是什么触发了错误。
我尝试在我的实时服务器中
php artisan config:clear
,但同样,我不知道它是否有效,因为我无法复制该错误。
有人可以帮我解决这个问题,并帮助我找到触发错误的原因吗?预先感谢您。
这不是中间件相关的问题,而是路由器/控制器级别的问题。中间件完成后,您可以在路由器/控制器上进行一些重定向并返回redirect();可能是空的。检查中间件后的重定向。