запретить анонимность для всех страниц, кроме пути "~ / " в asp.net

in asp.net, я использую этот раздел конфигурации, чтобы запретить анонимным пользователям для всех страниц.

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
<authorization>
  <deny users="?" />
</authorization>

и я использую следующее, чтобы объявить исключение, к которому anonymous может получить доступ.

<location path="Welcome.aspx">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>

это прекрасно работает для меня.

однако, как я могу установить только страницу по умолчанию в качестве исключения? (например: anonymous может получить доступ только http://mysite/, но не может получить доступ к другим страницам на сайте?)

Я тоже пытался использовать путь="~/" или "/" и это не работает.

2 ответов


Если path="Default.aspx" не работает, тогда это нельзя сделать с помощью конфигурации. Нет синтаксиса, доступного для указания только корня приложения в атрибуте path.


Я думаю, вы можете изменить свою структуру папок, чтобы достичь этого. Тогда вы можете изменить web.config запретить

<configuration>
    <system.web>
        <authorization>
            <allow roles="administrators" />
            <deny users="?" />
        </authorization>
    </system.web>
</configuration>