Приложение теряет аутентификацию при выполнении перенаправления в виртуальный каталог - PullRequest
1 голос
/ 03 мая 2010

У меня есть следующие настройки: http://www.example.com/dir1/ и http://www.example.com/dir2/

Каждый виртуальный каталог настроен на IIS6.0 как приложение с собственным AppPool.

При перенаправлении аутентифицированного пользователя из dir1 в dir2 с использованием response.redirect, я теряю информацию аутентификации для пользователя, и пользователь перенаправляется на страницу входа. Эта проблема не возникала с каждым приложением (dir1 и dir2), настроенным в поддомене, например: http://dir1.example.com и http://dir2.example.com.

Я решил проблему, добавив ключ машины в файл machine.config.

Может кто-нибудь объяснить мне, почему он не работает в конфигурации http://www.example.com/dir1?

Ответы [ 2 ]

2 голосов
/ 05 мая 2010

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

  1. Каждый файл web.config должен иметь точную копию общего раздела machineKey. НАПРИМЕР. создайте один раздел и вставьте его во все web.configs, с которыми вы хотите поделиться FormsTickets.

  2. Каждый элемент MembershipProvider (и роли / профили и т. Д.) Должен иметь один и тот же атрибут applicationName. По умолчанию это '/', поэтому если вы не изменили его вручную, проблем быть не должно.

  3. Все поставщики во всех приложениях должны совместно использовать общую строку подключения к общему экземпляру aspnetdb.

  4. Если вы пытались выполнить любой из этих шагов по отдельности или постепенно, вероятно, БД находится в несогласованном состоянии. Убедитесь, что каждое из этих требований выполнено, и начните с новой базы данных.

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

Дайте мне знать, если у вас есть еще вопросы.

1 голос
/ 03 мая 2010

Я не знаю ASP, но я полагаю, что вы не указываете путь для используемого вами файла cookie сеанса, поэтому настройка пути по умолчанию будет соответствовать пути, в котором устанавливается файл cookie, /dir1 и /dir2 соответственно.

При использовании поддоменов вы, вероятно, использовали example.com в качестве основного домена cookie, поэтому он был доступен для обоих поддоменов = нет проблем.

Вы сможете это выяснить, просмотрев cookie-файлы сеанса в своем браузере (например, на вкладке «Cookies» на панели инструментов веб-разработчика Firefox ).

Если я прав, вам нужно будет указать / в качестве пути для файла cookie сеанса.

Я не знаю, в какой момент это можно отрегулировать, но, возможно, это укажет вам правильное направление.

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