ASP.NET Authorization наследует правила - PullRequest
1 голос
/ 30 июня 2011

Я пытаюсь защитить (под) каталог на моем веб-сайте ASP.NET, который содержит файлы (видео, документы и т. Д.). Поэтому я создал файл Web.config:

<?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <deny users="?"/>
      <allow roles="Administrator"/>
      <allow roles="Author"/>
      <allow roles="Report"/>
    </authorization>
  </system.web>
</configuration>

Эти роли соответствуют тем, которые определены в таблице ролей asp.net в моей базе данных.

Я открыл IIS7, чтобы проверить, были ли там правила авторизации и были ли они. Но было также 2 унаследованных правила, которые установлены на «Разрешить всем пользователям». Кажется, что эти правила переопределяют мои правила, установленные в файле de Web.config. Я не могу удалить эти унаследованные правила.

Есть ли способ отключить эти унаследованные правила авторизации, только для моей подпапки?

Заранее спасибо!

Ответы [ 3 ]

1 голос
/ 30 июня 2011

В web.config вашего корневого каталога попробуйте следующее

<location path=”MySite/SubDirectory” allowOverride=”false”>
    <system.web>
        <authorization>
            <allow users=”?” />
        </authorization>
    </system.web>
</location>
0 голосов
/ 23 марта 2012

T

Да, вы можете добавить эти полномочия через IIS Manager, используя правила авторизации .NET, как вы упомянули, или в файле Web.Config.Однако имейте в виду, что вы ДОЛЖНЫ добавить правила «Разрешить» перед правилами «Запретить», потому что запрет всегда переопределяет на одном уровне папок.Порядок приоритета:

Local Deny - being top priority
Local Allow
Inherited Deny
Inherited Allow

Если существует правило локального запрета перед любыми другими правилами локального разрешения на том же уровне папки, ни одно из правил разрешения не будет применено.Например, если у меня есть родительский каталог Sales с дочерними папками Management, Customers и SalesTeam, и я определяю правило запрета для Sales, то все пользователи / роли должны быть явно разрешены вдочерние каталоги.Скажем, у меня также есть роли, соответствующие каждой из этих папок, я бы определил правило Разрешить для каждой из них их соответствующие папки, предоставляя им доступ к содержимому / страницам в нем.

Надеюсь, вы найдете это полезнымЯ знаю, что это старый вопрос.Ура;)

0 голосов
/ 30 июня 2011

Попробуйте удалить их из конфигурации ASP.NET. Откройте его маленьким значком в правом углу обозревателя решений (или Project \ Website-> ASP.NET Configuration).

В конфигурации ASP.NET используйте Безопасность -> Правила доступа -> Управление правилами доступа для соответствующей папки.

...