Вопрос

В ? подстановочный знак представляет пользователей, не прошедших проверку подлинности, в то время как * представляет всех пользователей, прошедших проверку подлинности и не прошедших проверку подлинности.В моей книге показан следующий пример авторизации по URL:

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


Но разве приведенный выше код не имеет того же эффекта, что и :

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

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

Это было полезно?

Решение

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

deny user="?" 

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

allow users="dan,matthew" 

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

Отредактировано для добавления:и, как указывает @Deviant, отказывать в доступе к не прошедшему проверку подлинности бессмысленно, поскольку последняя запись также включает в себя не прошедший проверку подлинности.Хорошую запись в блоге, посвященную этой теме, можно найти по адресу: Блог Гуру Саркара

Другие советы

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

Статья в MSDN

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

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

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

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

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

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

запретить элемент для авторизации (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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top