Можно ли обмениваться данными сеанса из приложения asp.net mvc и приложения python? - PullRequest
8 голосов
/ 07 марта 2012

Я хотел бы иметь возможность обмениваться некоторыми данными между приложением asp.net mvc и приложением python / django. Тип данных, которыми я хотел бы поделиться, - данные аутентификации или сеанса.

Ответы [ 4 ]

4 голосов
/ 15 марта 2012

Это, конечно, возможно , если вы получаете доступ к некоторым общим ресурсам между обеими платформами.Вероятно, есть несколько способов сделать это, но одним из наиболее очевидных будет использование некоторого общего резервного хранилища, т.е.базы данных или даже memcached, который будет быстрее.Я не пользователь Django, но, насколько я знаю, в нем поддерживается memcached ...

Конечно, существует более сложный сценарий, связанный с этим, и это совместимость данных .Вам, вероятно, придется использовать какой-то взаимозаменяемый формат, который понимают обе платформы.XML, JSON, BSON или аналогичные.Так что даже при использовании memcached вам придется делать это перевод .

3 голосов
/ 20 марта 2012

Как бы я поделился сессией ...

Сделать независимым от субдомена Session Cookie

<httpCookies domain=".mydomain.tld" />

У меня есть два субдомена, которые я хочу разделить сеанс между

www.mydomain.tld [ASP.net MVC app]
extra.mydomain.tld [Python app]

Создание простого веб-сервиса или универсального обработчика в ASP.net, который возвращает сеанс пользователя, сериализованный в JSON или XML.

Если вы используете универсальный обработчик, не забудьте использовать интерфейсы IReadOnlySessionState или IRequiresSessionState в классе.

Теперь из extra.mydomain.tld вы можете вызвать ваш обработчик или службу www.ession.Mydomain.tld / [Get / Set] SessionValue. Он получит ваш файл cookie .mydomain.tld и позволит поделиться изменяющимися значениями.

2 голосов
/ 22 марта 2012

Я бы рекомендовал следующий подход с использованием общей базы данных (это может быть общий кэш или любое другое хранилище данных):

  1. Когда пользователь обращается к одному из ваших приложений в вашем домене, вы создаете cookieс ключом "_shared_session" и значением случайной строки, сгенерированной вашим приложением;
  2. Сохраните значение этого файла cookie в базе данных и свяжите его с объектом JSON, содержащим данные, которые вы хотите передать между приложениями.;
  3. Когда пользователь обращается к другому приложению, вы проверяете, существует ли файл cookie с ключом "_shared_session", и читаете его значение;
  4. Используя значение файла cookie, вы можете получить общееОбъект JSON.

Быстрый ответ: должен существовать фильтр, который ищет общий файл cookie перед созданием нового сеанса

0 голосов
/ 17 марта 2012

Существует опция для сохранения состояния сеанса в базе данных MS SQL Server, которая доступна "из коробки". Используйте шаги из следующего kb http://support.microsoft.com/kb/317604 Это больше о конфигурации, а не о реализации. Вы можете написать своего собственного провайдера нестандартного хранилища, но есть ли причина для этого?

Я не знаком с python, но для него есть хотя бы ODBC-драйверы http://wiki.python.org/moin/SQL%20Server

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