Я делаю быстрый тест песочницы с некоторыми переписанными URL-адресами (пример взят из блога Скотта Гатри) и Аутентификацией / авторизацией с помощью форм.
У меня очень простая настройка.
~/View/(\d{1,6}) => ~/Public/View.aspx?ContentID=$1
И
~/Buy/(\d{1,6}) => ~/Private/Purchase.aspx?ContentID=$1
Я подтвердил, что перезапись URL работает, перейдя к каждому из следующих пунктов отдельно
Затем я включил аутентификацию / авторизацию с помощью форм для этих двух каталогов в Web.Config. Настройте следующим образом
<location path="Private">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
<location path="Public">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
Это прекрасно работает, когда я просматриваю 2 исходных URL (.aspx)
но не запускается вообще, когда я перехожу к URL Перезаписанные версии.
Я пытался добавить <location>
разделы для Buy
отдельно, но это все равно не может вызвать срабатывание модуля авторизации / аутентификации.
Предположительно, это потому, что эти URL-адреса не рассматриваются как ресурсы ASPX ... Я могу обойти это, заставив правило переписывателя искать
<LookFor>~/Buy/(\d{1,6})\.aspx</LookFor>
т.е. заставить переписанную версию иметь ASPX в конце, но это только кажется уродливым.
Есть ли способ заставить обработчики аутентификации запускаться для любого типа URL независимо от расширения (или его отсутствия)