У меня проблемы с разрешением доступа определенной роли к определенной странице в подкаталоге.
В моем приложении ASP.NET есть каталог ~ / Forms / Administration, доступ к которому ограничен.Существует определенный файл ~ / Forms / Administration / Default.aspx, к которому я хочу предоставить доступ 1 дополнительной роли пользователя, а также роль администратора.
В ~ / Forms / Administration у меня естьФайл web.config, который выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<authorization>
<allow roles="Administrator, User" />
<deny users="*"/>
</authorization>
</system.web>
<location path="Forms/Administration/Default.aspx">
<system.web>
<authorization>
<allow roles="Administrator, User, AdditionalUser" />
</authorization>
</system.web>
</location>
</configuration>
Пользователь Admin работает нормально, но AdditionalUser всегда дает сбой.Я пробовал несколько вещей - перечисление местоположения как
<location path="Forms/Administration/Default.aspx">
И как
<location path="~/Forms/Administration/Default.aspx">
Является ли deny = "*" из первого общего правила имеющим прецедент?Я попытался изменить
<deny users="*"/>
на
<deny users="?"/>
Но в итоге получило от AdditionalUser доступ к всему .Предложения?
РЕДАКТИРОВАТЬ: я пытался поместить разрешение для конкретного местоположения перед универсальным правилом запрета, если порядок имеет значение.Та же проблема.
ОБНОВЛЕНИЕ: Я явно что-то здесь упускаю: я удалил конфигурацию deny * и оставил только раздел, относящийся к конкретному местоположению.Затем, вместо того, чтобы разрешить определенные роли, я установил эту роль, чтобы запретить все (*).Тем не менее, это не отрицает меня вообще, когда я вхожу в систему.Я даже сократил правило, чтобы оно не относилось к конкретному файлу, а применимо ко всему каталогу, и оно мне ничего не отказывает.Однако оригинальные правила, не связанные с определением местоположения, работают, поэтому я знаю, что этот файл конфигурации читается.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="Forms/Administration">
<system.web>
<authorization>
<deny users="*" />
</authorization>
</system.web>
</location>
</configuration>