Progettazione di autorizzazione flessibile nelle pagine ASP.NET?

0

Sto sviluppando un'applicazione Webforms ASP.NET con pagine che visualizzano informazioni basate sul livello di autorizzazione dell'utente autenticato (molto tipico). Scriverò un semplice esempio del problema che sto affrontando:

Poniamo che voglio avere una pagina con 4 pulsanti:

1- "OnlyForAdmins". 2- Pulsante "OnlyForManagersAndAdmins" 3- Pulsante "Ospite" 4- pulsante "autenticato"

A seconda del livello di autorizzazione del visitatore, devono essere visualizzati uno o più pulsanti. In questo momento nel codice dietro i pulsanti vengono gestiti nel modo seguente:

public void Page_Load(object sender, EventArgs e)
{
    if (HttpContext.Current.User.Identity.IsAuthenticated)
        Athenticated.Visible = true;
    if (HttpContext.Current.User.IsInRole("Admins"))
        OnlyForAdmins.Visible = true;
    if (HttpContext.Current.User.IsInRole("Manager") || HttpContext.Current.User.IsInRole("Admins"))
        OnlyForManagersAndAdmin.Visible = true;
}

Mentre funziona, onestamente penso che questo approccio sia piuttosto inflessibile, dovendo aggiungere più "se" per ogni nuovo ruolo che presento.

Mi chiedo se esistano approcci per gestire questo tipo di problemi. Sarei grato se qualcuno potesse illuminarmi.

Grazie.

    
posta David Jiménez Martínez 17.04.2014 - 12:10
fonte

1 risposta

1

Lo farei in questo modo:

Un utente può contenere un numero di ruoli all'interno dell'applicazione (incluso nessuno). Questi saranno recuperati da un archivio dati esterno.

Qualsiasi controllo all'interno dell'applicazione è disponibile per qualsiasi numero di ruoli. Questi potrebbero essere definiti staticamente o caricati da un archivio dati esterno.

Un controllo diventa "disponibile" quando il set di ruoli dell'utente corrente interseca con i ruoli richiesti per accedere a quel controllo.

Ad esempio:

Button1 potrebbe essere "taggato" con i ruoli "Admin" e "Manager".
Button2 potrebbe essere taggato solo con il ruolo "Admin".

Manager3 potrebbe avere i ruoli "Autenticato" e "Manager". Possono accedere a Button1.

Admin4 avrà i ruoli "Autenticato" e "Amministratore". Possono accedere ai pulsanti entrambi .

Guest5 non ha alcun ruolo (essendo non autenticato) e non può usare nessuno dei due pulsanti.

    
risposta data 17.04.2014 - 14:23
fonte

Leggi altre domande sui tag