2013-08-19 10 views
5

Mam niestandardowy moduł HttpModule do uwierzytelniania. W module obsługi zdarzeń modułu AuthenticateRequest sprawdzam, czy dostępny jest niestandardowy bilet SSO, i w takim przypadku wykonaj pewną logikę uwierzytelniania.Błąd przejścia z HttpModule do aplikacji MVC

Jeśli bilet SSO jest dostępny, ale jest niepoprawny, chciałbym pokazać użytkownikowi przyjazny komunikat o błędzie. Wolałbym w jakiś sposób ustawić status HTTP 401 (nieautoryzowany, używany w przypadku niepowodzenia uwierzytelnienia) i przekazać znaczący komunikat o błędzie z modułu http.

Chciałbym wtedy, aby aplikacja MVC w jakiś sposób otrzymała te informacje i wykorzystała je do renderowania niestandardowej strony błędu 401, która zawiera znaczący komunikat o błędzie z modułu.

Jaki jest najlepszy sposób podniesienia błędu w module http i jaki jest najlepszy sposób na wyświetlenie błędu za pomocą aplikacji MVC (aby uzyskać komunikat o błędzie w układzie aplikacji MVC)?

+0

To jest dobre pytanie i jestem również zainteresowany najlepszym podejściem do obsługi błędy spoza MVC Framework/Request Pipeline, gdy celem jest zwrócenie widoku błędu, który jest częścią MVC. – asymptoticFault

Odpowiedz

1

Można by utworzyć niestandardową controllerfactory, aw waszym

protected override IController GetControllerInstance(RequestContext context, Type controllerType) 

Będziesz miał dostęp do HttpContext i RouteData przez Twojego obiektu kontekstowego. Jeśli użytkownik nie jest uwierzytelniony, można manipulować routedata, aby obciążyć żądany kontroler/akcję żądanymi połączeniami/parametrami trasy (na przykład komunikatem o stanie http)

Powiązane problemy