#c# #asp.net #asp.net-mvc #iis
#c# #asp.net #asp.net-mvc #iis
Вопрос:
У меня есть ASP.NET Веб-сайт MVC, который размещен в дочернем каталоге другого веб-сайта, который защищен с помощью формы входа, как показано ниже:
<domain>/parent --asp.net 2.0, with login form (standard form auth)
<domain>/parent/mysite --asp.net mvc 4.0
server: IIS 6
для входа на mysite
веб-сайт пользователь должен пройти форму входа parent
на веб-сайт. все в порядке, пока мы не включим приложение twilio mysite
и не получим общедоступный доступ к twiml <domain>/parent/mysite/twilio/twiml
. /twilio
это область, /twiml
это контроллер.
я попробовал следующую конфигурацию в /mysite
web.config, но она не работает.
<location path="~/parent/mysite/twilio">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
Редактировать
у меня нет контроля / доступа для изменения кода / конфигурации на родительском веб-сайте.
есть идеи, как заставить это работать?
Ответ №1:
Родительское приложение имеет аутентификацию форм. поэтому он создает зашифрованный файл cookie для браузера клиента, если бы вы могли расшифровать этот файл cookie в своем дочернем приложении, тогда дочернее приложение могло бы проверить, должен ли быть предоставлен доступ.
Вышесказанное делает много предположений, главным образом, о том, что вы выполняете стандартную аутентификацию Microsoft forms, и, если вам повезет, также используете стандартных поставщиков членства Microsoft.
Чтобы вы могли расшифровать файл cookie, вы должны установить machineKey одинаковым в обоих приложениях, объясняет этот блог.
Я думаю, вам, возможно, придется обновить ваше приложение 2.0, но я не знаю.
Комментарии:
1. спасибо за ваш ответ. да, я использую стандартную аутентификацию Microsoft forms. я перешел по предоставленной вами ссылке, но все еще не понимаю, подходит ли она мне. куда я должен поместить код для проверки и предоставления доступа? потому что я думаю, что форма входа отображается, не касаясь дочернего кода. нет?
2. Я не знаю asp.net 2.0 достаточно хорошо, однако для меня с 4 дочерними приложениями MVC 4.0 я просто использовал одну и ту же базу данных членства для каждого дочернего приложения (web.config) defaultProvider …… и установил для каждого machineKey одинаковый. Мне не нужно было писать код. Я думаю, вы найдете это таким же, как при использовании поставщика членства MS. Но я думаю, вам придется обновить код 2.0, чтобы использовать 4.0 esp. для поставщика членства.