Domanda

Il carattere jolly ? 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 l'autore ha anche incluso < deny users = "? " / > regola per un motivo?

È stato utile?

Soluzione

ASP.NET concede l'accesso dal file di configurazione come una questione di precedenza. In caso di potenziale conflitto, la prima concessione che si verifica ha la precedenza. Quindi,

deny user="?" 

nega l'accesso all'utente anonimo. Quindi

allow users="dan,matthew" 

concede l'accesso a quell'utente. Infine, nega l'accesso a tutti. Questo si scuote come tutti tranne Dan, a Matthew viene negato l'accesso.

Modificato per aggiungere: e come sottolinea @Deviant, negare l'accesso a utenti non autenticati è inutile, poiché l'ultima voce include anche quelli non autenticati. Un buon post sul blog che discute questo argomento è disponibile all'indirizzo: Blog di Guru Sarkar

Altri suggerimenti

" In fase di esecuzione, il modulo di autorizzazione scorre attraverso gli elementi allow e deny, a partire dal file di configurazione più locale, fino a quando il modulo di autorizzazione trova la prima regola di accesso che si 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 trovata sia una regola di consenso o di rifiuto. La regola di autorizzazione predefinita è. Pertanto, per impostazione predefinita, l'accesso è consentito se non configurato diversamente. & Quot;

Articolo su MSDN

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

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

Secondo i documenti, qui non c'è alcuna differenza nei tuoi 2 set di regole.

L'esempio 1 è per le applicazioni asp.net che utilizzano l'autenticazione con moduli. Questa è una pratica comune per le applicazioni Internet perché l'utente non è autenticato fino a quando non è autenticato rispetto ad alcuni moduli di sicurezza.

L'esempio 2 è per l'applicazione asp.net che utilizza l'autenticazione di Windows. L'autenticazione di Windows utilizza Active Directory per autenticare gli utenti. Ciò impedirà l'accesso alla tua applicazione. Uso questa funzione su applicazioni Intranet.

Vedi questi due link:

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

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top