Laravel 8 使用 OR 条件的相同路由多个中间件
Laravel 8 same route multiple middleware using OR condition
您好,我尝试使用像下面代码这样的中间件来验证 OR 运算符
Route::get('/page', [Controller::class, 'index'])->middleware(['mid1','mid2']);
在此示例中,它使用了 AND 运算符而不是,或者我也使用了这样的组
Route::group(['middleware' => 'mid1'], function () {
Route::get('/page', [Controller::class, 'index']);
});
Route::group(['middleware' => 'mid2'], function () {
Route::get('/page', [Controller::class, 'index']);
});
但是使用具有相同路线的组,组中的第二条路线是唯一可读的。
请帮忙
laravel 中没有任何内置功能可以做这样的事情。
您可以创建另一个 middle-ware 来包含您需要申请的两个条件。
在你的中间件中:
public function handle($request, Closure $next) {
if (condition1 || condition2) {
return $request($next);
}
abort('statusCode');
}
我同意@Faesal。最好将两个中间件逻辑合并为一个中间件。
public function handle($request, Closure $next) {
if (your condition) {
//logic inside mid1 handler
}else{
//logic inside mid2 handler
}
}
虽然不推荐,但是你可以把你的条件放在路由文件里。
if(your conditions){
Route::group(['middleware' => 'mid1'], function () {
Route::get('/page', [Controller::class, 'index']);
});
}else{
Route::group(['middleware' => 'mid2'], function () {
Route::get('/page', [Controller::class, 'index']);
});
}
您好,我尝试使用像下面代码这样的中间件来验证 OR 运算符
Route::get('/page', [Controller::class, 'index'])->middleware(['mid1','mid2']);
在此示例中,它使用了 AND 运算符而不是,或者我也使用了这样的组
Route::group(['middleware' => 'mid1'], function () {
Route::get('/page', [Controller::class, 'index']);
});
Route::group(['middleware' => 'mid2'], function () {
Route::get('/page', [Controller::class, 'index']);
});
但是使用具有相同路线的组,组中的第二条路线是唯一可读的。 请帮忙
laravel 中没有任何内置功能可以做这样的事情。
您可以创建另一个 middle-ware 来包含您需要申请的两个条件。
在你的中间件中:
public function handle($request, Closure $next) {
if (condition1 || condition2) {
return $request($next);
}
abort('statusCode');
}
我同意@Faesal。最好将两个中间件逻辑合并为一个中间件。
public function handle($request, Closure $next) {
if (your condition) {
//logic inside mid1 handler
}else{
//logic inside mid2 handler
}
}
虽然不推荐,但是你可以把你的条件放在路由文件里。
if(your conditions){
Route::group(['middleware' => 'mid1'], function () {
Route::get('/page', [Controller::class, 'index']);
});
}else{
Route::group(['middleware' => 'mid2'], function () {
Route::get('/page', [Controller::class, 'index']);
});
}