2016-02-24 28 views
9

È possibile applicare l'autorizzazione a due o più criteri? Sto usando ASP.NET 5, rc1.ASP.NET 5 Autorizzazione contro due o più politiche

[Authorize(Policy = "Limited,Full")] 
public class FooBarController : Controller 
{ 
    // This code doesn't work 
} 

Se no, come posso raggiungere questo obiettivo senza l'utilizzo di politiche? Esistono due gruppi di utenti che possono accedere a questo controller: "Completo" e "Limitato". Gli utenti possono appartenere a "Completo" o "Limitato" o entrambi. Richiedono solo di appartenere a uno dei due gruppi per poter accedere a questo controller.

risposta

10

Non nel modo desiderato; le politiche sono progettate per essere cumulative. Ad esempio, se si utilizzano due attributi separati, entrambi devono passare.

È necessario valutare le condizioni OR all'interno di una singola politica. Ma non è necessario codificarlo come OR all'interno di un singolo gestore. Puoi avere un requisito che ha più di un gestore. Se uno dei gestori segnala il successo, il requisito è soddisfatto. Vedere il passaggio 6 nel mio Authorization Workshop.

+0

Se i criteri sono cumulativi, perché vengono sostituiti i valori di default quando si utilizzano quelli personalizzati? Il cuore di questa domanda proviene da [questa domanda] (https://stackoverflow.com/questions/44187969/why-are-unauthenticated-requests-allowed-in-custom-policies). Dichiaro politiche personalizzate e non voglio che le richieste non autenticate entrino mai nei miei gestori di autorizzazione. Il modo in cui sto usando è dal punto 2 del tuo workshop di autorizzazione (autorizzando tutti gli endpoint e mettendo '[AllowAnonymous]' dove necessario). Sembra un antipattern, ma potrei essere stupido! – steamrolla

+1

Fondamentalmente supponiamo che se stai impostando le tue politiche sai cosa stai facendo. L'applicazione di una politica indica che si intende sovrascrivere il valore predefinito. – blowdart

+0

Capito. Sembra che la politica di default dovrebbe essere una "linea di base" come se fosse la tua prima politica in una raccolta di quelli personalizzati. – steamrolla

-11

provare a utilizzare Ruolo invece

[Authorize(Role = "Limited,Full")] 
+5

I ruoli non sono norme. – blowdart