2012-03-09 4 views
2

나는 약간의 node.js 프로젝트에서 일하고 있는데, 인터넷 검색을하는 동안 조금 혼란 스러울 지 모르지만 어쩌면 여러분 중 일부가 다시 나를 향해 길을 가리킬 수 있습니다.다중 도메인 로그인

여러 웹 사이트가 DocPad (우수한 소프트웨어)에 의해 생성되고 다른 도메인에서 호스팅됩니다.

이제 모든 웹 사이트에 "로그인 모듈"(여권을 사용하여 Node.js로 작성)이 제공됩니다. 시각적으로 볼 때 Web-Kreation의 우수한 로그인 슬라이더 (Here 데모)와 비슷하게 보입니다. 내 계획은 nginx를 사용하여 모든/login-request를 login-app로 라우트하는 것이 었습니다.

문제는 오히려 여러 도메인 및 클라이언트 측 구현과 관련이 있습니다. 모든 로그인은 동일한 데이터베이스를 사용합니다.

어쨌든 둘 다 함께 사용하고 로그인 모듈 (동일한 도메인을 항상 사용할 수 있음)에서 세션 쿠키를 만들 수 있습니까?

+0

내 질문에 대한 명확한 설명이 필요합니다. 사이트가 다른 도메인 (예 : superexample.com)을 사용하는 동안 login-app (항상 login.example.com)의 쿠키를 설정할 수 있습니까? 공통 로그인 부분을 어떻게 통합합니까? 내 생각 엔 XMLHTTPRequest를 사용하여 가져오고 있지만 지금은 완전히 혼란스러워합니다. – lucorlis

답변

1

'login-app'에서 성공적으로 로그인하면 현재 사용자에 대한 정보로 암호화 된 문자열을 생성 할 수 있습니다. 이 문자열을 get/post 매개 변수에 전달하여 필요한 도메인으로 리디렉션 할 수 있습니다. 암호화 키는 'login-app'및 웹 사이트에만 알려져 있습니다. 이 암호화 된 데이터를 신뢰할 수 있습니다. 동일한 사용자에 대해 키가 다를 때마다 확인해야합니다. 예를 들어 로그인 시간 또는 임의 시간에 대한 정보를 추가 할 수 있습니다. 데이터 암호를 해독 한 후 특정 도메인에 대한 인증 쿠키를 설정할 수 있습니다.

+0

앱의 서버 측에서 일어나는 일을 우아하게 묘사하고 있습니다. 실제로는 문제가 아닙니다. 나는 추가 질문에 나의 질문을 명확히하려고 노력했다. – lucorlis

2

누군가 다른 사람이 같은 문제를 겪을 경우 참조 할 수 있도록 내 자신의 질문에 대답하고 있습니다.

결국, 나는 약간 다른 설정을함으로써 나의 문제를 해결했다. 모듈 대신 각 페이지의 DNS를 사용하여 모든 사이트에 중앙 로그인 응용 프로그램을 사용합니다. 사이트 자체는 개인 정보에 액세스 할 필요가 없으므로 문제가되지 않습니다.

DocPad는 여전히 다른 웹 사이트를 생성하는 데 사용됩니다 (탁월한 작품 - 나는 이것을 매우 자주 말하지만, 훌륭한 소프트웨어가 있다면 잠시 언급하지 않을 이유가 없습니다) 모든 정적 컨텐츠는 CDN을 사용하여 사용자에게 전달됩니다.

로그인 시스템은 Redis를 유일한 데이터베이스로 사용하는 node.js 응용 프로그램입니다. login.example.com의 DocPad에서 렌더링되는 모든 페이지에서 간단한 iframe을 통해 통합됩니다.