работа с аутентификацией в asp.net с использованием членства - PullRequest
1 голос
/ 17 сентября 2009

Хорошо, вот проблема:

У меня есть два сайта: www.mysite.com и blog.mysite.com (поддельные имена сайтов), которые предполагают разделение аутентификации. Страница входа находится на www.mysite.com/login/login.aspx

.

Теперь на сайте блога есть web.config со следующим разделом аутентификации:

<authentication mode="Forms">
  <forms timeout="50000000" 
   loginUrl="http://www.mysite.com/login/login.aspx"
   defaultUrl="~/"/>
</authentication>
<authorization>
   <deny users="?"/>
</authorization>

Теперь я нажимаю blog.mysite.com/andrey/page.aspx, и он перенаправляет меня на страницу входа, которая находится на www сайте. Реальная проблема заключается в том, что строка запроса «reditect» будет содержать только относительный URL-адрес страницы (andrey/page.aspx), поэтому, когда я войду в систему, она попытается перенаправить меня на www.mysite.com/andrey/page.aspx, а не на blog.mysite.com/andrey/page.aspx, где я начал, так что, конечно, все не получается.

Есть ли способ указать объекту Membership указывать полный путь в параметре строки запроса "redirect", когда он возвращается на страницу входа?

Спасибо! Андрей

1 Ответ

1 голос
/ 17 сентября 2009

Предполагая, что каждый домен имеет свой собственный файл web.config, я думаю, это может сработать.

1) Создайте страницу входа для www.mysite.com и blog.mysite.com
2) Укажите обе базы данных членов
3) Убедитесь, что оба имеют одинаковый атрибут applicationName членства:

<membership><providers><add applicationName="mySite">

4) Убедитесь, что для обоих имен установлено одинаковое имя:

<authentication mode="Forms"><forms  name="mySite">

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


Можете ли вы вызвать FormsAuthentication.SetAuthCookie Method и вручную перенаправить на http-реферер?


Я только что видел это в документации для FormsAuthentication.RedirectFromLoginPage

По умолчанию переменная ReturnUrl должен ссылаться на страницу в текущее приложение. Если ReturnUrl относится к странице в другом приложение или на другом сервере, метод RedirectFromLoginPage перенаправляет на URL в Свойство DefaultUrl. Если хотите разрешить перенаправления на страницу за пределами текущее приложение, вы должны установить Свойство EnableCrossAppRedirects для истина с использованием enableCrossAppRedirects атрибут конфигурации форм элемент. Примечание о безопасности Примечание по безопасности:

Установка EnableCrossAppRedirects свойство true, чтобы позволить Переадресация между приложениями является потенциальная угроза безопасности. когда перенаправления между приложениями разрешено, ваш сайт уязвим для вредоносные веб-сайты, которые используют ваши страница входа, чтобы убедить ваш веб-сайт пользователи, которые они используют безопасный страница на вашем сайте. Для повышения безопасности при использовании кросс-приложения перенаправляет, вы должны переопределить Метод RedirectFromLoginPage, чтобы разрешить перенаправляет только на утвержденные веб-сайты.

Помогает ли вообще использование этого свойства?

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