Передача данных сеанса между приложениями ASP.NET

У нас есть несколько приложений ASP.NET, развернутых на нескольких серверах. Есть ли стандартный способ повторно использовать данные сеанса или какой-либо другой метод, чтобы не требовать от пользователей входа в следующее приложение при переходе от приложения к приложению, если они уже прошли аутентификацию? Я надеюсь, что есть лучший способ сделать это, о котором вы, ребята, знаете. Я чувствую, что должно быть что-то легкое, чего мне не хватает.

Спасибо.

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


person tooleb    schedule 05.03.2009    source источник
comment
Аутентификация и сеанс - это две отдельные (хотя и связанные) проблемы, ответили на бит сеанса в моем ответе   -  person eglasius    schedule 05.03.2009


Ответы (5)


вы можете реализовать стратегию единой регистрации для своих приложений.

http://aspalliance.com/1545_Understanding_Single_SignOn_in_ASPNET_20.all

http://blah.winsmarts.com/2006/05/19/aspnet-20-implementing-single-sign-on-sso-with-membership-api.aspx

http://johndyer.name/post/2005/12/Single-SignOn-with-ASPNET-Membership-and-WebServices.aspx

http://msdn.microsoft.com/en-us/library/ms972971.aspx

person Keith Rull    schedule 05.03.2009


Для сеанса проверьте это: http://www.codeproject.com/KB/aspnet/Sharing_session_state.aspx

Дополните его, чтобы файл cookie стал доступен: http://mgrzyb.blogspot.com/2007/12/aspnet-and-subdomains.html

person eglasius    schedule 05.03.2009
comment
Я не думаю, что будет работать с поддоменами, поскольку cookie сеанса по умолчанию имеет полное имя хоста. - person chris; 05.03.2009
comment
обновлен ссылкой на дополнительную информацию о том, как решить проблему с поддоменом - person eglasius; 05.03.2009
comment
кстати, я знаю, что так работает, но этот парень утверждает, что вы можете сделать это проще: forum.asp .net / t / 1332808.aspx (не уверен, есть ли, но попробовать стоит) - person eglasius; 05.03.2009

Из вашего вопроса неясно, беспокоитесь ли вы только о входе в систему или вам действительно нужно обмениваться данными сеанса между приложениями.

Предполагая последнее, вы можете попробовать что-то вроде этого:

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

    Response.Cookies ["ASP.NET_SessionId"]. Домен = ".mydomain.com";

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

person chris    schedule 05.03.2009

Совместное использование входа в систему между приложениями (описанное выше) - это совсем другая игра, чем совместное использование сеансов ASP.NET между приложениями.

Почему вы хотите разделять сеансы между приложениями?

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

Если ваши приложения очень тесно связаны, например пользователь использует и то, и другое одновременно или почти одновременно, вы можете рассмотреть возможность объединения их в одно приложение ASP.NET.

Если ваши приложения не так тесно связаны, возможно, они должны использовать одну и ту же базу данных в качестве средства для обмена данными или использовать API, например на основе веб-сервисов для обмена информацией.

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

person saille    schedule 10.03.2009