Domanda

Sto cercando di trovare un buon modello da utilizzare per la convalida l'accesso degli utenti.

In sostanza su un'applicazione webforms ho avuto un quadro che ha usato ruoli utente per definire l'accesso, ad esempio, gli utenti sono stati assegnati in ruoli, e "pagine" sono stati concesso l'accesso a una pagina. Ho avuto una tabella nel database con tutte le pagine elencate in esso. Pagine potrebbero avere pagine figlio che ha ottenuto il loro accesso ereditato dal genitore.

Quando si definisce l'accesso, ho assegnato i ruoli di accesso alle pagine. Gli utenti con il ruolo poi hanno avuto accesso alle pagine. E 'abbastanza semplice da gestire pure. Il modo in cui ho implementato questo era su una classe di base che ogni pagina ha ereditato. Su pageload / init Vorrei verificare l'URL della pagina e convalidare l'accesso e agire in modo appropriato.

Comunque ora sto lavorando su un'applicazione MVC e la necessità di implementare qualcosa di simile, ma non riesco a trovare un buon modo per fare il mio lavoro precedente soluzione. Semplicemente perché non ho le pagine statiche come i percorsi URL. Anche io non sono sicuro di come migliore per affrontare questo come ora ho controller piuttosto che pagine aspx.

Ho guardato il MVCSitemapprovider, ma che non funziona fuori una base di dati, ha bisogno di un file Sitemap. Ho bisogno di cambiare il controllo persmissions utente al volo.

Ogni pensiero / suggerimenti / puntatori sarebbe molto apprezzato.

È stato utile?

Soluzione

La tua tecnica è facilmente realizzabile creando il proprio ActionFilter: http://msdn.microsoft.com/en-us/library/dd410056. aspx

È possibile quindi applicare questo attributo ai controller o metodi di azione e rotolare la vostra sicurezza pagina molto facilmente.

public class MinmalSecurity : ActionFilterAttribute
{
    private string _roles;
    public MinmalSecurity(string roles)
    {
        _roles = roles;
    }

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        //go to database,find permissions, redirect or proceed as nescessary

        base.OnActionExecuting(filterContext);
    }
}

Altri suggerimenti

Quando si crea un'applicazione MVC, non il sito vuoto, v'è un fornitore di base di appartenenza ASP.NET incluso. Che farà tutto ciò che state cercando, con poco o nessun codice.

Ecco MSDN: http://msdn.microsoft.com/en -us / library / yh26yfzy.aspx

Ecco un progetto CodePlex che espande le funzionalità più di quello che è stato costruito in: http: //mvcmembership.codeplex. com /

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