Laravel返回404而不是我的403



我已经在我的应用程序中实现了一个自定义中间件。我发现了一个问题。

它不知何故没有到达abort(403),而是给了我这个错误:模型[AppModelsMeeting]没有查询结果">

我的目标是重定向用户回来,如果他们在一个会议页面,不存在/存在到另一个用户。但是它没有重定向我,而是发送错误。

这是我的中间件:
public function handle(Request $request, Closure $next)
{
$userid = Auth::user()->id;
$meetings = Meeting::where('user_id', $userid)->get();
$url = $request->segment(4);
$idArr = [];
foreach ($meetings as $meeting) {
array_push($idArr, $meeting->id);
}

if (!in_array($url, $idArr)) {
abort(403);
} else {
return $next($request);
}
}

url只是会议的id,所以可以正常工作。

给你的信息,它可以到达中间件,所以它被正确地连接/添加。它只是不访问if代码。

为了它的价值,这是我的控制器,我连接中间件。

public function __construct()
{
$this->middleware(CheckMeeting::class)->only('show');
}

有人能解释或帮助我吗?提前谢谢。

编辑:

这些是我的路线

Route::apiResource('login', LoginController::class)->only(['index', 'store', 'show']);
Route::delete('logout', [LoginController::class, 'destroy']);
Route::apiResource('register', RegisterController::class)->only('store');
Route::apiResource('meeting', MeetingController::class)->middleware('auth:sanctum');
Route::post('keywords', [FileController::class, 'index']);
Route::apiResource('file', FileController::class)->middleware('auth:sanctum')->except(['index']);
Route::apiResource('userignoreword', IgnoreWordController::class)->only(['store'])->middleware('auth:sanctum');

我使用的URL是:http://xxx/meeting/10XXX是占位符,因为它不相关。

尝试使用responsehelper

return response(null,403)

最新更新