2013-08-19 15 views
5

Ho un HttpModule personalizzato per l'autenticazione. Nel gestore di eventi AuthenticateRequest del modulo, controllo se è disponibile un ticket SSO personalizzato e, in tal caso, eseguo alcune regole di autenticazione.Errore di trasmissione da HttpModule all'applicazione MVC

Se il ticket SSO è disponibile, ma non corretto, vorrei mostrare un messaggio di errore amichevole all'utente. Preferirei essere in grado di impostare in qualche modo lo Stato HTTP 401 (Non autorizzato, usato quando l'autenticazione fallisce) e trasmettere un messaggio di errore significativo dal modulo http.

Vorrei quindi che l'applicazione MVC ottenesse in qualche modo questa informazione e la usasse per eseguire il rendering di una pagina di errore 401 personalizzata che include il messaggio di errore significativo dal modulo.

Qual è il modo migliore per aumentare l'errore nel modulo http e qual è il modo migliore per farlo visualizzare l'errore utilizzando l'applicazione MVC (per ottenere il messaggio di errore nel layout dell'applicazione MVC)?

+0

Questa è una buona domanda e sono anche interessato all'approccio migliore per la gestione errori al di fuori di MVC Framework/Request Pipeline quando l'obiettivo è restituire una vista di errore che fa parte di MVC. – asymptoticFault

risposta

1

è possibile creare una ControllerFactory personalizzato, e nel tuo:

protected override IController GetControllerInstance(RequestContext context, Type controllerType) 

Avrete accesso al HttpContext e RouteData attraverso il vostro oggetto di contesto. Se l'utente non è autenticato, è possibile manipolare il routedata per indirizzare il controllore/azione desiderato con i parametri/parametri routecolari desiderati (ad esempio un messaggio di stato http)