2017-12-11 20 views
0

나는 매우 이상한 문제가 있습니다. 나는 ZfcUser를 인증 모듈로 사용한다. ZF3 및 ZfcUser 모듈을 사용하여 다양한 환경에서 많은 프로젝트를 작성했습니다. 나는 노골적으로 그런 종류의 문제를 경험했다. 현재 프로젝트에서는 프로덕션 서버의 시스템에 로그인 할 수 없습니다. 나는 로컬 env 또는 다른 테스트 환경에서 succesfuly 로그를 남긴다.ZF3 - ZfcUser 세션에서 신원을 확인할 수 없습니다.

나는 무슨 일이 일어나고 있는지 조사하려고합니다. 프로덕션 환경에서 로그인 페이지로 이동하여 자격 증명을 입력하면 시스템이 홈페이지로 리디렉션됩니다. 오류 없음, 경고 없음 ... notihnig. 하지만 로그인하지 않았습니다. 프레임 워크에서 ID를 확인합니다 (ID()). 이는 null입니다. PHP 세션에서 서버 문제 일 수 있다고 생각했습니다. 서버에서 세션을 확인했습니다. 그 문제는 거기에 없었던 것처럼 보입니다.

프레임 워크는 세션에 필요한 데이터를 성공적으로 저장했습니다. Zend_Auth 키, ID 키 및 로그인 한 사용자의 값을 발견했습니다. PHP 세션에서는 모든 것이 OK 인 것 같습니다.

나는 힘이 없으며 여기에서 무슨 일이 일어나고 있는지, 그리고 어디에 문제가 있는지 생각하지도 않습니다. 오류가 발생하지 않습니다. 로컬 및 프로덕션 환경에서 코드 실행을 추적합니다. 모든 것이 동일합니다. 프레임 워크가 제대로 작동하는 것 같습니다. 그러나 IDENTITY는 항상 null입니다.

+0

캐시를 지운 후에 시도해 보셨습니까? – unclexo

+0

물론 캐시, 쿠키를 청소 해 보았습니다 .... Finaly Chrome이 그 이유입니다. Firefox와 Opera에서 모든 것이 잘 작동합니다. 나는 심지어 파이어 폭스로 이주하는 것을 생각한다. – Ivo

답변

0

발견.

따라서 사이트는 하위 도메인에서 실행 중입니다. 말하십시오 sub.domain.tld. 이 사이트는 domain.tld 인 메인 도메인과 다릅니다. 프로그램 코드에서 응용 프로그램의 favicon은 domain.tld이 아닌 sub.domain.tld에서 요청되었습니다.

결과적으로 http://sub.domain.tld을 누르면 브라우저에 2 개의 PHPSESSID 쿠키가 저장됩니다. 에서 sub.domain 다른 아래 하나는 파이어 폭스와 IE가 세션을 엉망 didnt한다이다

재미있는 엉망하는 크롬을 couses을에 domain.tld와 사이트 porperly 일하고 있었다. 나는 Crhome이 유죄라고 말하지 않는다. 분명히 프로그램 코드가 문제를 제기하고있었습니다. 하지만 크롬은 한 도메인이 다른 도메인의 하위 도메인임을 인식합니다.

그 이유는 다른 환경에서 로컬 설정이나 다른 도메인으로 프로젝트를 실행하려고했을 때입니다.test.different-에 domain.tld, THER 다시 두 PHPSESSID 쿠키 있었다 설정할 수 있지만이 시간에 크롬 에 domain.tld의 하위 도메인으로 인식되지 test.different-domain.tld와 렸기 때문에 세션으로 엉망 didnt한다

아주 작고 어리석은 실수이지만 큰 문제는