Как получить доступ к одной и той же сессии на двух сайтах? - PullRequest
4 голосов
/ 07 октября 2009

Мне нужно знать, как получить доступ к сеансу, установленному одним веб-сайтом или веб-приложением в другом веб-приложении.

Например, я вошел на gmail.com на вкладке Firefox, а затем открыл orkut.com на другой вкладке, и здесь мне не нужно входить.

Мне нужно получить доступ или совместно использовать один и тот же сеанс пользователя в двух разных веб-приложениях в ASP.Net.

Ответы [ 5 ]

7 голосов
/ 07 октября 2009

Вы не можете пересечь домен приложения со встроенным сеансом asp.net из соображений безопасности.

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

5 голосов
/ 22 октября 2009

Пожалуйста, проверьте очень хорошую статью из проекта Code Единая регистрация в нескольких приложениях в ASP.NET

Также проверьте эту тему с asp.net http://forums.asp.net/t/1023838.aspx?View=Flat

Надеюсь, это вам очень поможет.

4 голосов
/ 07 октября 2009

Если ваши приложения не используют один и тот же домен (например, как на example.com или один на a.example.com, а другой на b.example.com), файлы cookie здесь вам не помогут. Вам нужно некоторое хранилище сессий, которое доступно обоим вашим приложениям, например в базе данных, к которой у обоих есть доступ (например, именно так это делают stackoverflow.com и serverfault.com).

Однако вам необходимо каким-то образом выяснить, какая учетная запись пользователя / сеанс на сайте A соответствует той же учетной записи на сайте B; вам нужно сделать это только один раз (чтобы продолжить с « связать ваши учетные записи »).

3 голосов
/ 20 октября 2009

Вы не можете получить доступ к одной и той же "сессии" с совершенно разных серверов.

Из того, что вы описываете, вам просто нужно использовать тот же логин, например, Вы не хотите предоставлять свои учетные данные снова. Это, как ответил голубь, сделано с помощью решения Single Sign On . Статья в Википедии содержит много полезных ссылок.

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

В основном OpenID, например, используется здесь в stackoverflow, это решение той же проблемы, хотя у вас обычно нет неявного входа в систему - вам нужно явно войти в систему.

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

Однако следует помнить о возможных проблемах конфиденциальности, если сайты явно не принадлежат друг другу. Люди могут чувствовать себя отчужденными, если вы заранее поделились их личностью, если они не распознают, что оба сервера принадлежат одной и той же сущности.

1 голос
/ 26 октября 2009

Чтобы достичь желаемого эффекта, вы не сможете сделать это через сеансы, потому что каждый сеанс независим от друг друга и не может получить доступ к ресурсам другого. Как уже говорили другие, самое близкое, что вы можете использовать, это какая-то система реализации и аутентификации, такая как OpenID.

DotNetOpenAuth - отличное место для поиска примеров того, как реализовать систему такого типа для проекта ASP.NET.

...