Отдельные приложения, использующие один и тот же файл cookie сеанса ASP.Net - PullRequest
7 голосов
/ 19 ноября 2008

У меня есть два приложения ASP.Net, которые находятся в двух разных папках на моем сервере:

  • /Foo <- это стандартное незащищенное приложение </li>
  • /Secure <- это отдельное приложение, требующее SSL по IIS </li>

Проблема в том, что по умолчанию файл cookie ASP.NET_SessionId указан в домене и используется двумя приложениями в разных каталогах. Мне нужно, чтобы сессионный cookie-файл отличался, потому что я не могу позволить использовать угнанный cookie-файл на /Foo для предоставления доступа к приложению /Secure.

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

В качестве дополнительной головной боли, даже если я пишу собственный код для установки пути к cookie, я боюсь, что некоторые браузеры чувствительны к регистру и не будут использовать один и тот же сеансовый cookie для /Foo и /foo, что, в зависимости от того, как построены ссылки, может привести к нескольким сеансам в одном приложении.

Кто-нибудь сталкивался и преодолевал эту проблему?

Ответы [ 4 ]

10 голосов
/ 19 ноября 2008

В .Net 2.0 и выше вы можете установить для атрибута «cookieName» XML-элемента «sessionState» в вашем файле web.config разные значения для каждого из ваших приложений. Это не позволит им использовать один и тот же идентификатор сессии.

Вот справочник MSDN для этого.

1 голос
/ 08 августа 2012

если вы используете проверку подлинности с помощью форм, вам также необходимо изменить cookie-файл формы в web.config:

<forms name="Foo"...
<forms name="Secure"...
0 голосов
/ 19 ноября 2008

Проверьте значок папки /Secure в IIS.

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

Если это значок глобуса, то это виртуальный каталог, и он будет использовать тот же сеанс, что и корневой сайт, и /Foo.

0 голосов
/ 19 ноября 2008

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

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