2010-08-13 3 views
2

나는 비교적 일반적인 문제라고 생각되는 것을 가지고 있지만 문제를 연구 한 후에 생각만큼 쉽지는 않습니다.CakePHP로 기본 로그인 설정 변경하기

나는 (1.2.7 버전을 사용하는) CakePHP 응용 프로그램을 가지고 있으며 인증 구성 요소를 사용하여 표준 로그인 절차를 변경하려고합니다. 내 사용자가 로그인 할 때 사용하는 지속적인 로그인 화면 (예 :이 Jquery 플러그인 : http://web-kreation.com/demos/Sliding_login_panel_jquery/)을 사용하고 싶습니다.

Cake 용어로/pages/home 화면에서 Auth 구성 요소에 로그인 할 수 있지만 Cakephp는/users/login으로 계속 리디렉션합니다. 내 응용 프로그램 컨트롤러에서

:

function beforeFilter() 
{ 
    ... 
    $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login'); 
    $this->Auth->loginRedirect = array('controller' => 'pages', 'action' => 'home'); 
    $this->Auth->logoutRedirect = array('controller' => 'pages', 'action' => 'home'); 
    $this->Auth->autoRedirect = false; 
    ... 
} 

내가/페이지/집에 loginAction를 변경하는 경우. 로그인이 작동하지 않습니다. 실제로/users/login 메소드에도 게시되지 않습니다. 정확히 무엇이 일어 났는지 확신 할 수 없습니다.

내 질문은 이것이다 :

내가 성공 및 실패 로그인에 동일한 위치로 돌아갑니다 www.EXAMPLE.com/에있는 로그인 폼을 어떻게 ?

/users/login으로 리디렉션하지 않거나 URL에 표시하지 않는 것이 좋습니다.

답변

2

$ this-> Auth->autoRedirect을 false로 설정하면 login() 메소드에서 수동으로 리디렉션해야합니다. this도보십시오.

+0

나는 이것을 시도했다. 그것은 로딩되지 않는 형태의 문제가 아닙니다. 그것은 로그인에서 케이크가하는 흑 마법의 문제입니다. 나는 아래의 코멘트에서 세부 사항을 언급했으나 이것들은 관련된 아이디어이다. 양식을/users/login 메소드에 게시 할 때 어떤 이유로 실제 호출이 로그인 기능에 적용되지 않습니다. loginAction을/users/login으로 변경하자마자 모든 것이 마술처럼 연결되어 문제없이 실행되기 때문에 Cake의 인증에 의해 관련되거나 보호된다고 가정 할 수 있습니다. – Todd

+0

문제없이 실행하면 문제는 무엇입니까? 사용자에게 로그인하려면 로그인 양식을 어딘가에 제출해야합니다. '$ this-> Auth-> loginAction'은 로그인 로직을 처리하는 메소드입니다. 그것은 당신이 원하는대로 지명 될 수 있습니다, f.ex. 'enter()'. 귀하의 양식은 loginAction에 지정한 행동을 제출해야합니다. 거기에서 로그인 논리를 수행하고 성공과 실패시 집으로 리디렉션하십시오. loginAction을 한 메소드로 설정하고 양식을 다른 메소드로 제출하면 작동하지 않습니다. – bancer

0

양식을 제출 한 곳을 변경하려면 양식의 제출 URL을 변경해야합니다. 간단합니다.

$form->create('User', array('url'=>array('controller'=>'users','action'=>'login'))) 

그런 다음 당신은 당신의 페이지를로드하고 action 속성을 확인하고 당신은 당신의 /users/login :

+0

응답 해 주셔서 감사합니다. 나는 전에 시도한 올바른 컨트롤러에 양식을 게시하지만 이상한 행동이 시작되는 곳을 확인했습니다. 컨트롤러의 실제 메서드는 호출되지 않습니다. 메소드의 모든 코드를 주석 처리하고 로깅 호출 만 추가하여이를 확인합니다. 어떤 식 으로든 Cake의 Auth가이를 보호한다면 어떤 아이디어가 있습니까? – Todd

+0

인증 구성 요소를 사용하는 경우 로그인 방법에 코드가 필요하지 않습니다. 비어있을 수 있으며 모든 코드를 지우고 빈 함수를 사용하여 코드를 문제없이 제거 할 수 있습니다. –

2

변경하려면 기본 로그인 URL이 lib/cake/Controller/component/AuthComponent.php에서 '인증'

변경 한 설정 볼 수 있습니다

public $loginAction = array(
     'controller' => 'users', //Change here 
     'action' => 'login', 
     'plugin' => null 
    );