Интеграция django и RoR (рубин на рельсах) - PullRequest
6 голосов
/ 19 августа 2011

У меня есть веб-сайт, созданный кем-то другим с ruby-on-rails, и сейчас я создаю приложение django.

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

пользователи не должны знать, что они «покидают» приложение django - для них его единственный веб-сайт - что приложение RoR выглядит и чувствует то же самое для них.

A. Как мне это сделать?
B. Онивойдите в систему с приложением django, чтобы сессиями и всеми пользовательскими материалами управлял django.Как я могу "передать" сеансы в приложение RoR?Должен ли я использовать iframe ??
C. Как выглядят ссылки в django на URL RoR?

Спасибо, ребята!

Ответы [ 2 ]

2 голосов
/ 25 августа 2011

Лучшей практикой здесь было бы посмотреть, как рекламные сети делят состояние между несколькими свойствами. Одним из часто используемых методов является пиксель отслеживания. Например, в вашем приложении Django вставьте:

<img src="http://myrailsapp/mysession_creator" />

Убедитесь, что ваше приложение rails отвечает по этому адресу сеансом. Это установит сессионный cookie в домене rails.

Теперь рассмотрим уровень безопасности, и это зависит от того, какой уровень безопасности вам нужен. Вы можете передать информацию, например:

<img src="http://myrailsapp/mysession_creator?user=myUserName" />

Очевидно, что это не невероятно безопасно, но это зависит от вашего приложения. Более безопасный метод будет:

<img src="http://myrailsapp/mysession_creator?t=<MD5HashTokenHere>" />

Тогда приложение Rails будет иметь механизм проверки этого токена на стороне сервера приложений Django (либо через состояние базы данных, либо через вызов приложения на стороне сервера). Больше работы, но больше безопасности.

Другой метод: если ваши приложения совместно используют корневой домен, вы можете использовать безопасный cookie-файл в корневом домене для передачи информации между приложениями. Например, https://django.myapp.com устанавливает файл cookie myapp.com, а https://rails.myapp.com знает, что нужно искать файл cookie с именем пользователя. Требуется сертификат SSL с подстановочным знаком в корневом домене.

Другой вариант - передавать токен или информацию для входа в систему с каждой ссылкой в ​​приложение Rails и иметь before_filter, который распознает передачу и устанавливает сеанс аналогичным образом.

0 голосов
/ 19 августа 2011

Я не уверен, что это сработает, но мы делали это до того, как использовать 2 приложения rails.

Убедитесь, что ключи сеанса в Rails и в вашем приложении django совпадают.

В Rails это, вероятно, будет выглядеть так:

ActionController::Base.session = {
  :key         => '_my_session_key',
  :secret      => '_my_session_secret'
}

В Django быстрый Google привел меня к этому:

https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-SECRET_KEY

Я думаю, что если они совпадают, два приложения будут использовать один и тот же сеанс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...