У меня возникают проблемы, позволяющие определенной роли получить доступ к определенной странице в подкаталоге.
В моем приложении 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 работает отлично, но дополнительный пользователь всегда терпит неудачу. Я пробовал несколько вещей - перечисление местоположения как
<location path="Forms/Administration/Default.aspx">
И как
<location path="~/Forms/Administration/Default.aspx">
Является ли deny = "*" из первого общего правила, имеющего прецедент? Я попытался изменить
<deny users="*"/>
Для
<deny users="?"/>
Но это приводит к тому, что AccessUnder предоставляет доступ ко всему. Предложения?
EDIT: я попытался помещать конкретное местоположение, чтобы разрешить правило общего отказа, в случае, если это имеет значение. Такая же проблема.
UPDATE: я явно пропустил что-то здесь: я удалил конфигурацию deny * и оставил только раздел, определяющий местоположение. Затем, вместо того, чтобы разрешать определенные роли, я установил, что нужно отказать всем (*). Тем не менее, он не отрицает меня вообще, когда я вхожу в систему. Я даже уменьшил правило, чтобы оно не было специфичным для файла, но применимо ко всему каталогу, и это не отрицает меня. Однако исходные правила, не относящиеся к местоположению, действительно работают, поэтому я знаю, что этот файл конфигурации читается.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="Forms/Administration">
<system.web>
<authorization>
<deny users="*" />
</authorization>
</system.web>
</location>
</configuration>