Почему <deny users = "?" /">, приведенные в следующем примере?
Подстановочный знак ?
представляет не прошедших проверку пользователей, а *
представляет всех пользователей, прошедших проверку подлинности и не прошедших проверку подлинности. В моей книге показан следующий пример авторизации URL:
<authorization>
<deny users="?" />
<allow users="dan,matthew" />
<deny users="*" />
</authorization>
Но не имеет ли вышеуказанный код тот же эффект, что и:
<authorization>
<allow users="dan,matthew" />
<deny users="*" />
</authorization>
или автор также включил правило <deny users="?" />
по какой-либо причине?
Ответы
Ответ 1
ASP.NET предоставляет доступ из файла конфигурации в качестве приоритета. В случае потенциального конфликта первостепенное значение имеет первый встречный грант. Итак,
deny user="?"
запрещает доступ к анонимному пользователю. Тогда
allow users="dan,matthew"
предоставляет доступ к этому пользователю. Наконец, он отрицает доступ ко всем. Это встряхивается, как и все, кроме дана, малтею отказывают в доступе.
Отредактировано для добавления: и, как указывает @Deviant, отказ в доступе к unauthenticated бессмысленен, так как последняя запись включает в себя также неаутентифицированную. Хорошую запись в блоге, обсуждающую эту тему, можно найти по адресу: Блог Гуру Саркара
Ответ 2
"Во время выполнения модуль авторизации выполняет итерацию через элементы разрешать и отклонять, начиная с самого локального файла конфигурации, до тех пор, пока модуль авторизации не найдет первое правило доступа, которое соответствует определенной учетной записи пользователя. Затем модуль авторизации предоставляет или запрещает доступ к ресурсу URL-адреса в зависимости от того, найдено ли первое правило доступа правило разрешить или запретить. Правило авторизации по умолчанию. Таким образом, по умолчанию доступ разрешен, если не настроен иначе."
Статья на MSDN
deny = * means deny everyone
deny = ? means deny unauthenticated users
В вашем первом примере deny * не повлияет на dan, matthew, так как они уже были разрешены предыдущим правилом.
Согласно документам, здесь нет разницы в ваших 2 наборах правил.
Ответ 3
Пример 1 для приложений asp.net с использованием аутентификации форм. Это обычная практика для интернет-приложений, поскольку пользователь не аутентифицирован до тех пор, пока не будет аутентификацией какого-либо модуля безопасности.
Пример 2 для приложения asp.net с использованием аутентификации Windows. Аутентификация Windows использует Active Directory для аутентификации пользователей. Воля предотвратит доступ к вашему приложению. Я использую эту функцию в приложениях интрасети.
Ответ 4
См. две ссылки:
deny Элемент авторизации (схема настроек ASP.NET)
http://msdn.microsoft.com/en-us/library/vstudio/8aeskccd%28v=vs.100%29.aspx
разрешить элемент для авторизации (схема настроек ASP.NET):
http://msdn.microsoft.com/en-us/library/vstudio/acsd09b0%28v=vs.100%29.aspx