2010-04-23 3 views
7

SOF에서 이에 대한 몇 가지 답변을 보았습니다. 그러나이 중 대부분은 하위 도메인 사용과 관련이 없으며 그 중 일부는 저에게 효과가 없었습니다. 공통적 인 하나는 session.cookie_domain을 사용한다는 것입니다. 내 이해에서 하위 도메인에서만 작동합니다.도메인 전체의 PHP 공유 세션

전적으로 다른 도메인을 다루는 솔루션에 관심이 있습니다 (하위 도메인의 가능성도 포함). 불행하게도 프로젝트 마감일은 그대로이며, 시간은 내 편이 아니기 때문에 SOF의 전문성과 경험으로 돌아갑니다.

현재 프로젝트 요약은 한 세션에 현재 user_id만을 저장하고 동일한 서버 환경 내의 다른 도메인에서이 값을 검색 할 수있는 하나의 사이트에 로그인 할 수 있어야합니다. 세션 데이터는 session id이 기본 키인 데이터베이스에서 저장/검색됩니다.

나는 솔루션을 구현하기 위해 "가볍고 간단하다"는 것을 기대한다.

시스템은 자체 모델보기 컨트롤러 디자인 패턴을 사용하므로 모든 요청 (다른 도메인 포함)은 단일 부트 스트랩 스크립트를 통해 실행됩니다. 도메인 이름을 변수로 사용하여 사용자에게 표시 할 컨텍스트를 결정합니다.

잠재적 인 것으로 보이는 옵션 중 하나는 숨겨진 이미지를 사용하고 alt 태그를 사용하여 user id을 설정하는 것입니다. 나의 첫인상은 이것이 즉시 "너무 쉽다"(가능하다면) 것처럼 보였고 보안 결점으로 가득 찼다. 디 스커스?

내가 고려한 또 다른 옵션은 IP 및 사용자 에이전트를 인증에 사용하는 것이지만 공유 네트워크 및 IP 주소 변경으로 인해 신뢰할 수없는 옵션이라고 생각합니다.

내가 생각 했었지만 아직 논의되지 않은 제 3의 옵션 (선호)은 htaccess을 사용하여 infact 아파치가 리디렉션 할 때 다른 도메인에 있다고 생각하도록 사용자를 속일 수 있습니다.
www.bar.com/news/categories/1

foo.com으로 사용자에게

www.foo.com/index.php?domain=bar.com&controller=news/categoires/1
같은 있지만, 디스플레이는 모든 요청을 실행하고 bar.com는 사용자들이 액세스 생각하는 것입니다 "메인 사이트 도메인"을 나타냅니다. 컨트롤러 요청은 요청중인 페이지와보기를 나타냅니다. 이것이 가능한가?

다른 옵션이 있습니까? 찬성/반대?

미리 감사드립니다.

+0

언급하는 것을 잊었다이 세션, 나는 현재 (XAMPP와 함께) 로컬 시스템을 실행할 수 있습니다. 로컬 도메인 이름 (편집 된 호스트 파일)과 fasthost에서 호스트하는 도메인을 혼합하여 사용하여 내 IP로 전달합니다. 그냥 내 현재 테스트에 영향을 미치고 있음을 언급 가치가 있다고 생각. – bigstylee

답변

-3

이 기능에 관심이있는 다른 사용자에게 도움이 될만한 간단한 대답은 없습니다. 구글 "싱글 사인온 (Single Sign On)"은 기술 및 일부 솔루션을 제공 할 예정이다.

htaccess를 사용하여 도메인 이름을 숨기는 방법은 악성 활동에 사용될 수 있으므로 불가능합니다.

이제 내 요구 사항을 충족시키는 시스템을 성공적으로 구현했습니다.

+1

이것은 답변이 아닙니다. 당신이 한 일을 우리에게 말하지 마세요. – Flimzy

0

session_set_save_handler에 대해 생각해 보았습니까? 세션을 데이터베이스에 저장하고 모든 도메인에서 액세스 할 수 있습니다.

+1

나는 이것을 사용하고있다. 문제는 PHP가 생성 한 session_id가 도메인마다 다르다는 것입니다. – bigstylee

+0

세션 ID로 사용자를 식별 할 수 없습니까? 테이블의 다른 열을 사용하십시오. youll은 각 사용자에 대해 여러 행을 가지고 있지만 한 행을 동일한 값으로 설정할 수 있습니다. 이 일은 한번도 해본 적이 없으며 그냥 물건을 던지기 만하면됩니다. – Galen

+1

foo.com은 ABC123의 세션 ID를 제공하고 bar.com은 QWERTY의 세션 ID를 제공합니다. IP/UserAgent를 비교하지 않으면 ABC123 및 QWERTY가 동일한 사용자를 가리키고 있음을 알 수있는 방법이 없습니다. 세션 데이터를 검색하는 데이터베이스 쿼리는 SELECT * FROM 세션 WHERE session_id = "% string"입니다. 아니면 내가 너를 그리워? – bigstylee

0
  1. 메인 세션 서버를 정의

  2. 사용 아약스/JSON (P)이 서버에서 세션을 요청할 수 (나는 memcached와와 함께이 작업을 수행),이 여러 도메인에 걸쳐 세션을 공유 할 수 있습니다

  3. 재사용 죄송합니다