저는 Appfog에서 Yii-app를 실행하고 있습니다. 두 개 이상의 인스턴스를 가질 때마다 더 이상 로그인 상태를 유지할 수 없습니다.여러 인스턴스가 임의로 사용자를 로그 아웃합니다.
여러 인스턴스에 세션에 대한 공유 저장소가 필요하며 EDMSHttpSession을 사용하여이를 구현했습니다. 그리고 그것은 localhost에서 작동합니다. 즉, 로그인 할 수 있고, Apache를 다시 시작하고 로그인 상태를 유지합니다. 또한 데이터베이스에서 세션 레코드를 제거하면 로그 아웃됩니다. 이것은 PHP가 세션을 저장하기 위해 데이터베이스를 사용하고 있다고 결론 내립니다.
세션의 공유 저장소가 Appfog에서 작동하지 않는 이유를 이해할 수 없으며 이 오류를 디버깅하는 방법에 대한 제안이 필요합니다.
좀 더 배경 정보 :
- 나는 자동 로그인을 위해 쿠키를 사용합니다. 그들은 30 일 동안 유효해야합니다 (그리고 크롬 관리자에 따라 )하지만 그것은 더 이상 작동하지 않습니다 다음 몇 시간 (브라우저 세션에서 추측) - 에 대한 로컬 호스트가 아닌 것 같아요.
- 여러 인스턴스와 자동 로그인을 사용하면 (즉, "remember me"을 클릭) 나는 보통 2 ~ 3 시간 후에 임의로 쫓겨납니다. 페이지가 새로 고침됩니다. 쿠키가 서버 세션에 관계없이 에 자동으로 로그인해야한다는 것을 알고 있습니까?
- Appfog에서 로컬 호스트에 SSL 끝점이 있습니다. 그렇지 않습니다.
- 나는 Appfog 내 공유 세션 스토리지 (데이터베이스 테이블을보고) 새로운 세션을 받고 있음을 확인했다
업데이트 :
것은 내가 몇 가지 테스트 아마도 내 결과가 sence을 만들 것 않았다 어떤 것.
쿠키를 모두 지우고 내 Appfog 앱을 다시 시작하십시오. 로그인하여 "내 계정 정보 기억"을 확인하십시오. 이제 다음과 같은 응답을 설정 - 쿠키 헤더는 다음과 같습니다 후속 요청에
Set-Cookie:PHPSESSID=vrfoi0o15v3qps2644uqtvkfa1; path=/
Set-Cookie:PHPSESSID=db38s1k1vp5ngll837ac0vh0u7; path=/
Set-Cookie:73dfaf673b71b1f92d34b8ab63dab17b=812bbcfd4f5b3be91f8c85d39c3b37bb93e4c6b8a%3A4%3A%7Bi%3A0%3Bs%3A24%3A%225087ea0b3145a75545000000%22%3Bi%3A1%3Bs%3A22%3A%22demo%40playbackenergy.se%22%3Bi%3A2%3Bi%3A2592000%3Bi%3A3%3Ba%3A0%3A%7B%7D%7D; expires=Sun, 09-Jun-2013 08:32:24 GMT; path=/
쿠키 헤더는 요청 :
Cookie:PHPSESSID=db38s1k1vp5ngll837ac0vh0u7; 73dfaf673b71b1f92d34b8ab63dab17b=812bbcfd4f5b3be91f8c85d39c3b37bb93e4c6b8a%3A4%3A%7Bi%3A0%3Bs%3A24%3A%225087ea0b3145a75545000000%22%3Bi%3A1%3Bs%3A22%3A%22demo%40playbackenergy.se%22%3Bi%3A2%3Bi%3A2592000%3Bi%3A3%3Ba%3A0%3A%7B%7D%7D
내가 데이터베이스 내 세션을 찾을 "db38s1k1vp5ngll837ac0vh0u7"
를 사용합니다. 해당 행은 다음과 같습니다 (vrfoi0o15v3qps2644uqtvkfa1
가 데이터베이스에서 발견하지 않는다) :
{
"_id" : ObjectId("518cb0981045979e06000000"),
"data" : "73dfaf673b71b1f92d34b8ab63dab17b__id|s:24:\"5087ea0b3145a75545000000\";73dfaf673b71b1f92d34b8ab63dab17b__name|s:22:\"[email protected]\";73dfaf673b71b1f92d34b8ab63dab17b__states|a:0:{}73dfaf673b71b1f92d34b8ab63dab17brole|s:4:\"demo\";",
"expire" : 1368176186,
"id" : "db38s1k1vp5ngll837ac0vh0u7"
}
지금 난 다시 내 Appfog 응용 프로그램을 다시 시작하고 내 app.Now 내가 로그 아웃 얻을에서 다른 페이지로 이동하려고합니다.그래서 당신이 이동
Cookie:PHPSESSID=db38s1k1vp5ngll837ac0vh0u7; 73dfaf673b71b1f92d34b8ab63dab17b=812bbcfd4f5b3be91f8c85d39c3b37bb93e4c6b8a%3A4%3A%7Bi%3A0%3Bs%3A24%3A%225087ea0b3145a75545000000%22%3Bi%3A1%3Bs%3A22%3A%22demo%40playbackenergy.se%22%3Bi%3A2%3Bi%3A2592000%3Bi%3A3%3Ba%3A0%3A%7B%7D%7D
감사! 나는 데이터베이스에서 쿠키와 세션에 어떤 변화가 있는지 확인하고 질문을 업데이트했다. 쿠키 헤더에 이상한 점이 있습니까? – luttkens
흠. 업데이트를 참조하십시오. 세션이 손실되지 않은 것 같습니다. DB에서 확인할 수 있습니다. –
지금 당장! 우선 게스트 사용자는 모든 페이지로드시 세션 ID가 변경되었음을 알았습니다. 나는 헤더를보고 모든 페이지에'Pragma : no-cache'와'Cache-Control : no-cache, no-store, must-revalidate'가 있음을 알았습니다. 'no-store'를 제거 할 때 세션 ID는 동일하게 유지되었고 이제는 다중 인스턴스가 작동합니다 (거의 각 인스턴스마다 다르며 YIn의 자산 폴더에 문제가 있습니다. 그러나 CDN이이를 해결해야합니다). – luttkens