如何使用Laravel中间件修复ERR_TOO_MANY_DIRECTS



我正在使用Laravel 8,当我重定向来自中间件的路由时,我面临问题ERR_TOO_MANY_DIRECTS。我正在用firebase otp验证用户,并设置cookie。如果otp验证,那么如果用户不在数据库中,我想重定向注册页面。我已经创建了中间件,并检查cookie是否设置,然后重定向到注册路由。

public function handle(Request $request, Closure $next)
{
if (Cookie::get('otpVerified')){
return redirect()->route('register');
}
return $next($request);
}

之后我就要面对这个问题在此处输入图像描述我的路线文件是

Route::get('/register', [RegisterController::class, 'register'])->name('register_user');
Auth::routes();
Route::group(['middleware' => 'otpVerify'], function (){
Route::get('/404', [AppHttpControllersErrorController::class, 'notFound'])->name('404');
Route::get('/', [AppHttpControllersDashboardDashboardController::class, 'index'])->name('dashboard');
});

我该如何修复它。我的内核文件是

protected $middlewareGroups = [
'web' => [
AppHttpMiddlewareEncryptCookies::class,
IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,
IlluminateSessionMiddlewareStartSession::class,
// IlluminateSessionMiddlewareAuthenticateSession::class,
IlluminateViewMiddlewareShareErrorsFromSession::class,
AppHttpMiddlewareVerifyCsrfToken::class,
IlluminateRoutingMiddlewareSubstituteBindings::class,
],
'api' => [
'throttle:api',
IlluminateRoutingMiddlewareSubstituteBindings::class,
],
];

protected $routeMiddleware = [
'auth' => AppHttpMiddlewareAuthenticate::class,
'auth.basic' => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class,
'cache.headers' => IlluminateHttpMiddlewareSetCacheHeaders::class,
'can' => IlluminateAuthMiddlewareAuthorize::class,
'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class,
'password.confirm' => IlluminateAuthMiddlewareRequirePassword::class,
'signed' => IlluminateRoutingMiddlewareValidateSignature::class,
'throttle' => IlluminateRoutingMiddlewareThrottleRequests::class,
'verified' => IlluminateAuthMiddlewareEnsureEmailIsVerified::class,
'otpVerify' =>  AppHttpMiddlewareOTPVarification::class,
];

在本节中,必须排除寄存器根

public function handle(Request $request, Closure $next)
{
if (Cookie::get('otpVerified') &&  $request->route()->getActionName() !== 'YourRegisterAction'){
return redirect()->route('register');
}
return $next($request);
}

最新更新