Por que incluído no exemplo a seguir?
Pergunta
o ?
curinga representa usuários não autenticados enquanto *
representa todos os usuários, autenticados e não autenticados. Meu livro mostra o seguinte exemplo de autorização de URL:
<authorization>
<deny users="?" />
<allow users="dan,matthew" />
<deny users="*" />
</authorization>
Mas o código acima não tem o mesmo efeito que:
<authorization>
<allow users="dan,matthew" />
<deny users="*" />
</authorization>
Ou o autor também incluiu <deny users="?" />
regra por um motivo?
Solução
O ASP.NET concede acesso a partir do arquivo de configuração como uma questão de precedência. Em caso de um conflito em potencial, a primeira concessão ocorrida tem precedência. Então,
deny user="?"
nega o acesso ao usuário anônimo. Então
allow users="dan,matthew"
concede acesso a esse usuário. Finalmente, nega o acesso a todos. Isso se abala como todos, exceto Dan, Matthew tem acesso negado.
Editado para acrescentar: e como @Devint aponta, negar o acesso a não autenticado é inútil, pois a última entrada também inclui não autenticada. Uma boa entrada de blog discutindo este tópico pode ser encontrada em: Blog do Guru Sarkar
Outras dicas
"No tempo de execução, o módulo de autorização itera através dos elementos de permitir e negar, começando no arquivo de configuração mais local, até que o módulo de autorização encontre a primeira regra de acesso que se encaixa em uma conta de usuário específica. Então, o módulo de autorização concede ou nega acesso a acesso a Um recurso de URL, dependendo se a primeira regra de acesso encontrada é uma regra de permitir ou negar. A regra de autorização padrão é. Assim, por padrão, o acesso é permitido, a menos que seja configurado de outra forma ".
Artigo em Msdn
deny = * means deny everyone
deny = ? means deny unauthenticated users
No seu primeiro exemplo, negar * não afetará Dan, Matthew, pois eles já foram permitidos pela regra anterior.
De acordo com os documentos, aqui não há diferença nos seus 2 conjuntos de regras.
O Exemplo 1 é para aplicativos ASP.NET usando a autenticação de formulários. Essa é uma prática comum para aplicativos da Internet, porque o usuário não é autenticado até que seja autentcation contra algum módulo de segurança.
O Exemplo 2 é para aplicativo ASP.NET usando a autenticação do Windows. A autenticação do Windows usa o Active Directory para autenticar usuários. O acesso impedirá o acesso ao seu aplicativo. Eu uso esse recurso em aplicativos intranet.
Veja esses dois links:
Deny Element for Authorization (esquema de configurações do ASP.NET) http://msdn.microsoft.com/en-us/library/vstudio/8aeskccd%28v=vs.100%29.aspx
Permitir elemento para autorização (esquema de configurações do ASP.NET): http://msdn.microsoft.com/en-us/library/vstudio/acsd09b0%28v=vs.100%29.aspx