2013-02-05 2 views
0

Laravel 응용 프로그램에 대한 일부 액세스 제어 논리를 구현 중입니다. 사용자에게 해당 리소스를 볼 권한이없는 경우 '승인되지 않은 페이지'로 리디렉션하고 싶습니다.상위 컨트롤러에서 리디렉션

내 URL에 컨트롤러/메소드 로직을 사용하고 있습니다.

내가 호출 할 수있는 컨트롤러/메서드에서 리디렉션 할 수 있지만 내 코드를 더 확장 가능하게하려면 부모 컨트롤러에서 ACL 논리 (Base_controller)를 확인하고 URI 앞에서 리디렉션하고 싶습니다. 컨트롤러/메소드에 액세스합니다.

리디렉션을 구조체에 추가하려고했거나 리디렉션되는 구조체에서 다른 방법을 호출하여 사용하지 못했습니다.

그래서 'Redirect :: to'는 URL에 지정된 컨트롤러/메소드에서만 작동하고 다른 곳에서는 작동하지 않기 때문에 이것이 가능한지 궁금합니다.

답변

5

리디렉션을 '반환'해야합니다.

return Redirect::to('login') 

하지만 당신은 필터에서 논리를 실행해야합니다 : 당신은 어디에서이 작업을 수행 할 수 있습니다

public function __construct() 
{ 
    $this->beforeFilter('acl'); 
} 

다음 filters.php에

Route::filter('acl', function() 
{ 
    if ($something) 
    { 
      return Redirect::to('somewhere'); 
    } 
}); 
+0

반환 리디렉션 : ('로그인')에 t는 어디에서나 작동하는 것 같습니다. 컨트롤러에 대한 __construct()에서 테스트했는데 리디렉션되지 않았습니다. – seavers

+0

이 유효한 '로그인'입니까? 그렇지 않은 경우 해당 이름이 지정된 경로로 리디렉션해야합니다. Redirect 클래스를 사용하기 전에 먼저 경로를 만들어야합니다. 예를 들어 이름이 지정된 route loginPage를 만든 다음 Redirect :: route ('loginPage')와 같이 명명 된 리디렉션을 수행 할 수 있습니다. – Juan

관련 문제