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?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top