2016-12-07 5 views
1

로그인으로 미들웨어 확인을했는데 얼마나 많은 게임에 사용자가 있는지, 여러 게임이있는 경우 다른보기를 보여주고 싶습니다. 사용자가 둘 이상일 경우마다 리디렉션 오류가 발생합니다.Laravel은 미들웨어 내부로 리디렉션됩니까?

이것은입니다. 경우 $assigned_games > 1

$games = Auth::user()->userGames; 
$assigned_games = count($games); 

if ($assigned_games == 1) { 
    return $next($request); 
} elseif ($assigned_games > 1) { 
    return redirect()->route('games.board'); 
} elseif ($assigned_games < 1) { 
    echo "no game bought"; 
    exit; 
} 

에 난 단지 return route('games.board')와도 시도했지만 작동하지 않습니다.

여기서 올바른 리디렉션을 어떻게 설정할 수 있습니까? 두 경로가 미들웨어 내부에있는 경우

+0

을 피하기 위해 리디렉션하지 않겠습니까? –

+0

@AlexeyMezenin이 당신을 너무 많이 리디렉션했습니다. " – nowilius

+0

코드는 정확하지만 game.board 라우트가 미들웨어를 사용하면 리다이렉트 루프로 이동하므로 리디렉션중인 경로가 다시 리디렉션되어서는 안되기 때문에 games.board 라우트가이 미들웨어를 사용하지 않도록하십시오. –

답변

2

그런 다음 현재 경로를 확인해야하고 리디렉션으로 그 같은 경우에 당신은 당신이 어떤 오류를받을 수 있나요 리디렉션 순환

$games = Auth::user()->userGames; 
$assigned_games = count($games); 

if ($assigned_games == 1) { 
    return $next($request); 
} elseif ($assigned_games > 1 && \Route::currentRouteName() != 'games.board') { 
    return redirect()->route('games.board'); 
} elseif ($assigned_games < 1) { 
    echo "no game bought"; 
    exit; 
} else { 
    return $next($request); 
} 
+0

작동하지만 지금은 항상이 페이지로 리디렉션했습니다. 로그인으로 만이 요청을 제한 할 수 있습니까? – nowilius

+0

경로에있는 미들웨어보다 먼저 인증 미들웨어를 추가하십시오. 그래서 전. Route :: group ([ 'middleware'=> [ 'auth', 'yourmiddleware']], function() {}); 그리고 로그인 한 후에 만 ​​미들웨어로 들어갑니다. –