Domanda Perché È incluso nel seguente esempio?


Il ? la wildcard rappresenta gli utenti non autenticati mentre * rappresenta tutti gli utenti, autenticati e non autenticati. Il mio libro mostra il seguente esempio di autorizzazione URL:

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


Ma il codice sopra non ha lo stesso effetto di:

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

o includeva anche l'autore <deny users="?" /> regola per un motivo?


60
2018-05-06 21:58


origine


risposte:


ASP.NET concede l'accesso dal file di configurazione come una questione di precedenza. In caso di potenziale conflitto, la prima concessione in corso ha la precedenza. Così,

deny user="?" 

nega l'accesso all'utente anonimo. Poi

allow users="dan,matthew" 

concede l'accesso a tale utente. Alla fine nega l'accesso a tutti. Questo è come se tutti, tranne dan, non abbiano accesso a Matthew.

Modificato per aggiungere: e come @Deviant fa notare, negare l'accesso a una persona non autenticata è inutile, dal momento che l'ultima voce include anche non autenticati. Un buon blog in cui si parla di questo argomento è disponibile all'indirizzo: Blog di Guru Sarkar


76
2018-05-06 22:14



"In fase di esecuzione, il modulo di autorizzazione itera attraverso gli elementi Consenti e Rifiuta, a partire dal file di configurazione più locale, fino a quando il modulo di autorizzazione non trova la prima regola di accesso adatta a un determinato account utente. Quindi, il modulo di autorizzazione concede o nega l'accesso a una risorsa URL a seconda che la prima regola di accesso rilevata sia una regola Consenti o una Regola negazione La regola di autorizzazione predefinita è. Pertanto, per impostazione predefinita, l'accesso è consentito se non diversamente configurato. "

Articolo a MSDN

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

Nel tuo primo esempio, deny * non influenzerà dan, matthew poiché erano già consentiti dalla regola precedente.

Secondo i documenti, qui non c'è differenza nelle tue 2 serie di regole.


36
2018-05-06 22:11



L'esempio 1 è per le applicazioni asp.net che utilizzano l'autenicazione delle forme. Questa è una pratica comune per le applicazioni Internet perché l'utente non è autenticato fino a quando non è autenticato contro un modulo di sicurezza.

L'esempio 2 è per l'applicazione asp.net che utilizza Windows Authenication. Autenticazione di Windows utilizza Active Directory per autenticare gli utenti. Ciò impedirà l'accesso alla tua applicazione. Io uso questa funzione su applicazioni intranet.


3
2018-05-06 22:13



Vedi questi due collegamenti:

nega Elemento per l'autorizzazione (schema impostazioni ASP.NET) http://msdn.microsoft.com/en-us/library/vstudio/8aeskccd%28v=vs.100%29.aspx

consenti Elemento per l'autorizzazione (schema impostazioni ASP.NET): http://msdn.microsoft.com/en-us/library/vstudio/acsd09b0%28v=vs.100%29.aspx


1
2017-08-19 20:54