2012-03-09 3 views
2

Я работаю над небольшим node.js-проектом, и, несмотря на то, что вы много путешествуете, я немного запутался, но, возможно, некоторые из вас смогут снова указать мне дорогу.Многодоменный вход

Несколько веб-сайтов генерирует DocPad (отличное программное обеспечение) и размещается в разных доменах.

Все эти веб-сайты теперь получают «модуль входа в систему» ​​(который также записывается в Node.js, используя паспорт). Визуально он будет похож на отличный слайдер для входа из Web-Kreation (Here демо). Мой план состоял в том, чтобы использовать nginx и направлять все/login-запросы в приложение login-app, которое работает нормально.

Проблема связана скорее с несколькими доменами, а с клиентами - всем этим. Все логины используют одну и ту же базу данных.

Могу ли я каким-то образом использовать оба метода вместе и создавать сеансовые куки из модуля Login-Module (который может использовать один и тот же домен все время)?

+0

Думаю, что мне нужно уточнить мой вопрос: Могу ли я просто установить cookie для входа в приложение (всегда из login.example.com), пока сайт использует другой домен (например, superexample.com). Как бы интегрировать общую часть входа? Моя догадка тянет его с XMLHTTPRequest, но я до сих пор смущен. – lucorlis

ответ

1

После успешного входа в систему «login-app» вы можете создать зашифрованную строку с информацией о текущем пользователе. Вы можете передать эту строку обратно в параметре get/post с перенаправлением в нужный домен. Ключ активации известен только «login-app» и вашим веб-сайтам. Вы можете доверять этим зашифрованным данным. Необходимо убедиться, что каждый раз, когда ключ отличается от одного и того же пользователя. Например, вы можете добавить информацию о времени входа в систему или случайном. После дешифрования данных вы можете установить cookie авторизации для определенного домена.

+0

Вы изящно описываете, что происходит на сервере приложения, что на самом деле не проблема. Я попытался уточнить свой вопрос в дополнительном комментарии. – lucorlis

2

Я отвечаю на свой вопрос для справки, если кто-то сталкивается с той же проблемой.

В конце концов, я решил свою проблему, имея немного другую настройку. Вместо модуля, использующего dns каждой страницы, я использую центральное приложение для входа во все сайты. Сами сайты не требуют доступа к какой-либо личной информации, поэтому это не проблема.

DocPad по-прежнему используется для создания различных веб-сайтов (отлично работает - я знаю, что я говорю это очень часто, но если есть блестящая часть программного обеспечения, нет причин не упоминать об этом время от времени) и все статическое содержимое доставляется пользователю с использованием CDN.

Система входа - это node.js-приложение, использующее Redis как единственную базу данных. Он интегрируется с помощью простого iframe на всех страницах, предоставленных DocPad на login.example.com.