2012-06-26 2 views
0

저는 yii 응용 프로그램에 많은 컨트롤러가 있습니다. 그들 모두는 당신이 로그인되어있을 때만 접근 할 수 있습니다. 그렇지 않으면 로그인 페이지로 리디렉션됩니다. 하지만 누구에게나 접근 할 수있는 액션이있는 컨트롤러가 하나 있습니다. 어떻게하면 Yii를 구성 할 수 있습니까?Yii의 특정 컨트롤러에 대한 예외

컨트롤러의 accessRules() 함수에서 많은 시도를했지만 아무 것도 작동하지 않습니다.

public function accessRules() { 
    return array(
     array('allow', 'users' => array('*')) 
    ); 
    } 

로그인 페이지로 리디렉션되지 않을 것으로 예상됩니다.

+2

무엇을 시도 했습니까? 예상되는 결과는 무엇입니까? 실제 결과는 무엇입니까? – Jon

답변

0

해당 코드로 무엇을 하려는지 명확하지 않습니다. 모든 사용자가 모든 작업에 액세스 할 수있게하려면 accessControl 필터와 accessRules() 구현을 완전히 제거하십시오.

업데이트 :

글쎄, 당신의 기지 Controllerdefaultbehavior 복원하기 위해 당신은 단순히 적절한 메소드를 오버라이드 (override) 할 필요가 모든 응용 프로그램 컨트롤러에 액세스 제어 규칙을 첨부하는 경우 :

public function filters() 
{ 
    return array(); 
} 

public function accessRules() 
{ 
    return array(); 
} 

그러나, ControlleraccessControl 이상의 필터를 연결하면 어떤 필터가 accessControl 라인인지 찾아서 제거해야합니다. 어느 것이 거기에 들어갈 수있는 구문이 꽤 있기 때문에 사소한 것은 아닙니다.

결국 Controller은 그렇게해서는 안됩니다. 모든 프론트 라인 컨트롤러가 아니라 많은 프론트 라인 컨트롤러간에 동작을 공유하려면 다른 클래스를 생성해야합니다. ControllerWithAccessControl이며 을 선택적으로에서 파생합니다.

+0

나는 그것을 전에 시도했다. 여전히 로그인 페이지로 리다이렉트됩니다. 어쩌면 내가 main.php에서 뭔가를 변경해야하지만, 나는 무엇을 모르겠다. – ESCOBAR

+1

@ESCOBAR : 아마도 기본 컨트롤러 클래스가 기본값을 제공합니까? 우리는 실제로 여기 디버깅 영역에 있습니다. – Jon

+0

기본 컨트롤러는 "컨트롤러"라는 Yii 컨트롤러가 아닙니다. 여기 함수 filters()와 accesRules()가 있습니다. 하지만 기본 동작을 피하기 위해 내 컨트롤러에서 이러한 함수를 덮어 써야합니다. 내 질문은 : 덮어 쓴 기능은 어떻게 생겼을 까? – ESCOBAR

관련 문제