2015-02-26 6 views
1

Может ли кто-нибудь помочь мне с промежуточным программным обеспечением, пожалуйста? Я получаю бесконечное перенаправление, которое сводит меня с ума на неделю.Laravel Middleware перенаправляет навсегда

/****** Route **********/ 
Route::group(['middleware' => 'auth'], function() { 
    Route::get('/profile', '[email protected]'); 

    // Superadmin & Admin 
    Route::group(['middleware' => 'admin'], function() { 
     Route::get('/dashboard', '[email protected]'); 
    }); 

    // Superadmin 
    Route::group(['middleware' => 'superadmin'], function() { 
      Route::get('/settings', '[email protected]'); 
    }); 
}); 

/****** Middleware *******/ 
// admin 
public function handle($request, Closure $next) 
{ 
    if (Auth::check()) { 
     if (User::isAdmin()) { // validate if superadmin or admin 
     return $next($request); 
    } else { 
     return redirect('/profile'); 
    } 
} 

// superadmin 
public function handle($request, Closure $next) 
{ 
    if (Auth::check()) { 
    if (User::isSuperAdmin()) { // validate if superadmin 
     return $next($request); 
    } else { 
     return redirect('/profile'); 
    } 
    } 
} 

Ok просто обновил код еще раз, но по-прежнему возникают проблемы, которые перенаправляет навсегда любые идеи?

// SuperAdmin 
public function handle($request, Closure $next) 
    { 
     if (Auth::check()) { 
      if (!User::isSuperAdmin()) { 
       return new RedirectResponse(url('/profile')); 
      } 
     } 

     return $next($request); 
    } 

// admin and superadmin 
public function handle($request, Closure $next) 
    { 
     if (Auth::check()) { 
      if (!User::isAdmin()) { 
       return new RedirectResponse(url('/profile')); 
      } 
     } 

     return $next($request); 
    } 

// auth 
public function handle($request, Closure $next) 
    { 
     if ($this->auth->guest()) 
     { 
      if ($request->ajax()) 
      { 
       return response('Unauthorized.', 401); 
      } 
      else 
      { 
       return redirect()->guest('/login'); 
      } 
     } 
    return $next($request); 
} 
+0

Пожалуйста, включите код как часть вашего вопроса. Внешние ссылки могут стать недоступными с течением времени. – Bogdan

+0

Каким URL-адресом вы пользуетесь, это вызывает цикл переадресации? Также, пожалуйста, напишите код для промежуточного программного обеспечения 'auth'. – Bogdan

+0

код обновления выше. вы можете проверить? – Yuusha

ответ

0

Исправлено. Причина заключалась в том, что как $ middleeware, так и $ routeMiddleware используют одно и то же промежуточное ПО

+1

Проблема заключается в том, что '$ middleware' работает на каждый запрос, в то время как '$ routeMiddleware' может быть применен специально к маршруту или контроллеру и выполняется только при необходимости. – Digitlimit