2013-08-02 7 views
0

사용자에 관한 모든 것을 처리하는 UsersController을 만든 CakePHP 앱을 만들었습니다. www.mydomain.com을 찾아 볼 때 로그인하면 색인 (app/View/Pages/home.ctp)이 표시됩니다. 그 밖에, 그것은 mydomain.com/users/login에 저를 리디렉션하고 로그인을 지속.CakePHP - 특정 페이지에 대한 인증되지 않은 액세스를 허용하는 방법

내가 AppController.php, PagesController.php 또는 app/Config/core.phpapp/Config/routes.php보고 시도했지만 아무것도 찾지 못했습니다. 내 UsersController.php, 또한, 그것에 대해 책임을지지 않습니다.

기억이 안 나는데이를 사용 중지하는 방법을 찾을 수 없습니다. 어떤 파일에 책임이 있습니까?

편집 : 내 CakePHP 버전은 2.3입니다.

+0

나에게 이것은 인증 구성 요소가 올바른 기본 동작처럼 들리지만 로그인하지 않으면'/ users/login'으로 리디렉션됩니다. 그래서 무능하게하고 싶습니까? 전혀 로그인 할 필요가 없습니까? – ndm

+0

mydomain.com에서 탐색 할 때 로그인 할 필요가 없습니다. 왜냐하면 손님도 내 홈페이지를보고 로그인하지 않아도되기를 원합니다. –

+1

알겠습니다. btw, auth 구성 요소와 특정 CakePHP 버전을 사용하는 것과 마찬가지로 질문에 항상 이와 같은 것을 지정하는 것이 좋습니다. – ndm

답변

1

일반적으로 auth components allow() method을 사용하여 특정 작업을 공개 할 수 있습니다.

PagesController은 모든 페이지를 단일 작업 (display())으로 처리하므로 특정 페이지 만 공개하려는 경우 페이지를 공개로 설정해야 할 수 있습니다. 이 경우 페이지 이름을 보유하는 request->params['pass'][0]을 사용하고 허용 된 페이지 목록에 대해 테스트 한 다음 Auth::allow을 사용하여 display 작업을 허용 할 수 있습니다.

예는 PagesController에 :

public function beforeFilter() 
{ 
    parent::beforeFilter(); 

    $allowedPages = array('home', 'foo', 'bar'); 
    if(isset($this->request->params['pass'][0]) && 
     in_array($this->request->params['pass'][0], $allowedPages)) 
    { 
     $this->Auth->allow('display'); 
    } 
} 

이 허용 것이다 home, foobar이없이 볼 수있는 페이지에 기록 될

당신이 모든 페이지를 만들고 싶어하세요. 공개이면 어떤 조건없이 간단히 Auth::allow을 사용할 수 있습니다. 예 :

public function beforeFilter() 
{ 
    parent::beforeFilter(); 
    $this->Auth->allow('display'); 
} 
+0

정말 고마워요 !!! 또한 당신의 설명과 함께 나는 내 마음에, 감사하지 않은 많은 것들을 가지고! –

관련 문제