2011-06-13 10 views
5

Ho creato un AuthorizationAttribute personalizzato che sto posizionando sui miei controller. Ho seguito this article. Ho implementato la logica di autorizzazione personalizzata nel metodo OnAuthorization e questo funziona correttamente. Quando l'utente non riesce l'autorizzazione, sto attualmente facendo quanto segue:Reindirizza alla pagina AccessDenied quando l'utente non è autorizzato

// if authorization check fails... 
filterContext.Result = new HttpUnauthorizedResult(); 

Questo visualizza un prompt di nome utente/password.

La mia domanda è qual è il modo consigliato di inviare l'utente a una pagina di tipo "Accesso negato" quando fallisce l'autorizzazione?

Sto utilizzando MVC3.

risposta

2

Alla fine sono andato per un redirect dritto:

public override void OnAuthorization(AuthorizationContext filterContext) 
... 
// if authorization check fails... 
filterContext.Result = new RedirectResult(AccessDeniedPage); 

Edit: Rob Conery ha un ottimo articolo che descrive in dettaglio con ASP.NET MVC: Securing Your Controller Actions

+3

Link is broken :-( – JenonD

5

Nella pagina di accesso, è possibile controllare se l'utente è già connesso e visualizzare un messaggio di accesso negato al posto del prompt di login.

+0

Anche se questo potrebbe lavorare su un singolo sito, questa soluzione non funziona affatto per un sistema single sign-on a meno che non si desideri che il servizio token di sicurezza comprenda implicitamente tutti i ruoli/diritti di accesso utente ai siti di Relying Party che sarebbe IMO molto scorretto. –

+0

finora così buono +1 – Har

Problemi correlati