56

Подстановочный знак ? представляет не прошедших проверку пользователей, а * представляет всех пользователей, прошедших проверку подлинности и не прошедших проверку подлинности. Моя книга показывает следующий пример авторизации URL:Почему <deny users = "?" />, приведенные в следующем примере?

<authorization> 
    <deny users="?" /> 
    <allow users="dan,matthew" /> 
    <deny users="*" /> 
</authorization> 


Но не выше код имеет тот же эффект, как:

<authorization> 
    <allow users="dan,matthew" /> 
    <deny users="*" /> 
</authorization> 

или же автор также включает <deny users="?" /> правила по причине, ?

ответ

74

ASP.NET предоставляет доступ к файлам конфигурации в качестве приоритета. В случае потенциального конфликта первостепенное значение имеет первый встречный грант. Таким образом,

deny user="?" 

запрещает доступ к анонимному пользователю. Затем

allow users="dan,matthew" 

предоставляет доступ к этому пользователю. Наконец, он отрицает доступ ко всем. Это встряхивается, как и все, кроме дана, малтею отказывают в доступе.

Отредактировано для добавления: и, как указывает @Deviant, отказ в доступе к неаутентифицированному бессмысленному, поскольку последняя запись включает также неаутентифицированную. Хорошая запись в блоге обсуждать эту тему можно найти по адресу: Guru Sarkar's Blog

33

«Во время выполнения модуль авторизации выполняет итерацию через элементы разрешать и отклонять, начиная с самого локального файла конфигурации, до тех пор, пока модуль авторизации не найдет первое правило доступа, которое соответствует определенной учетной записи пользователя. Затем модуль авторизации предоставляет или запрещает доступ к ресурсу URL в зависимости от того, установлено ли первое правило доступа как правило разрешения или запрета. Правило авторизации по умолчанию. Таким образом, по умолчанию доступ разрешен, если не настроен иначе ».

Статья на MSDN

deny = * means deny everyone 
deny = ? means deny unauthenticated users 

В вашем примере 1 отрицает * не будет влиять на дан, Матфея, так как они уже были разрешены предыдущим правилом.

Согласно документам, здесь нет разницы в ваших 2 наборах правил.

3

Пример 1 предназначен для приложений asp.net с использованием аутентификации форм. Это обычная практика для интернет-приложений, поскольку пользователь не аутентифицирован до тех пор, пока не будет аутентификацией какого-либо модуля безопасности.

Пример 2 для приложения asp.net с использованием аутентификации Windows. Аутентификация Windows использует Active Directory для аутентификации пользователей. Воля предотвратит доступ к вашему приложению. Я использую эту функцию в приложениях интрасети.

1

Смотрите эти две ссылки:

отказать Элемент авторизации (схема параметров ASP.NET) http://msdn.microsoft.com/en-us/library/vstudio/8aeskccd%28v=vs.100%29.aspx

позволяют Element для авторизации (ASP.NET Settings Schema): http://msdn.microsoft.com/en-us/library/vstudio/acsd09b0%28v=vs.100%29.aspx

+3

Можете ли вы объяснить, как это отвечает на вопрос? Ожидается, что ответы будут стоять сами по себе со ссылками, которые используются для справки. – Edward

Смежные вопросы