2012-05-29 3 views
0

나는 cakephp 문서의 인증 자습서를 읽고 작동하는 로그인 시스템을 만들었다.CakePHP Auth.redirect가 쓰여지지 않고있다.

로그인을 완료 한 후 처음 로그인했을 때 액세스하려고했던 작업으로 사용자가 리디렉션되도록해야합니다.

내가 방문한 페이지가 Auth 구성 요소의 시작 기능에 의해 세션 내에서 Auth.redirect에 기록되어야한다고 생각하지만 작동하지 않는 것 같습니다. 내 사용자 컨트롤러에서

내가 추가 한으로, beforeFilter에 다음

$this->Auth->allow('add', 'login'); 

을 따라서 내가 로그인 행동에 자동으로 리디렉션있어 편집 작업에 액세스하려고 할 때.

debug($this->Session->read()); 
debug($this->referer()); 

이 세션 정보를 출력하고,이 세션에서이 둘 [인증 기능 때문에 Auth.redirect의 언급이 없거나 자신이 할 수없는 : login 액션에서

는, 나는 포함했다 이를 사용하여 사용자를 리디렉션 할 수 있습니다.

나는 $ this-> referer를 사용했지만 어떤 이유로 인증 기능에 의해 자동으로 리디렉션 될 때 referer가 추적되지 않습니다.

누구나 auth.redirect가 작성되지 않을 수 있고 auth 기능으로 리디렉션 될 때 $ this-> referer가 채워지지 않는 이유를 알고 있습니까?

나는 반드시 WAMP를 사용하는 Windows 컴퓨터에 있습니다. 그러나 내 추가 작업은 성공 및 디버그 ($ this-> referer()) 후 로그인을 리디렉션합니다; 이 경우 헤더가 잘 작동해야하므로 리디렉션 URL을 선택합니다.

또한 참고 :

나는 데이터베이스에 저장된 세션을 통해보고 CakePHP에서의 문제를 확인했습니다.

auth.redirect가 세션에 저장되어있는 것처럼 보입니다. 그러나 사용자가 이전 데이터를 지우도록 리디렉션 될 때 어떤 이유로 새로운 세션이 생성됩니다.

어쨌든 사용자를 위해 새로운 세션 ID를 만드는 CakePHP를 중지 할 수 있습니까?

+1

loginRedirect가 null로 설정되어 있습니까? (기본값으로 수정해야합니다.) 로그인 작업으로 리디렉션 된 후'env ('HTTP_REFERER')'의 결과는 무엇입니까? – tigrang

+0

@tigrang 시도했습니다. 기록되는 Auth.redirect에 아무런 영향을 미치지 않고 loginRedirect를 설정 및 해제합니다. env ('HTTP_REFERER')가 비어 있습니다. – Alex

+1

'$ _SERVER'와'$ _ENV'는 비어 있습니까? php.ini 또는'phpinfo()','variables_order'의 값은 무엇입니까? – tigrang

답변

0

필자는 auth.redirect가 작동하지 않는 이유를 확인했습니다.

core.php에 사용자 정의 세션 쿠키 이름을 설정했는데, 세션 구성 요소가 사용자 정의 쿠키 이름과 작동하지 않아서 모든 페이지에 새 세션이 만들어집니다.

세션에 문제가 발생하고 사용자 지정 세션 쿠키 이름이있는 경우 기본값으로 다시 설정하면 작동합니다.

나는 CakePHP에 버그로 제출할 것입니다.

또한 참고 나는이 문제로 인해으로 발생하는했다 확인했다. 쿠키 이름에사용자 정의 쿠키 이름이 정상적으로 수행됩니다.

관련 문제