2011-06-13 18 views
5

Utworzono niestandardową AuthorizationAttribute, którą umieszczam na kontrolerach. Poszłam za this article. Zaimplementowałem niestandardową logikę autoryzacji w metodzie OnAuthorization, która działa dobrze. Gdy użytkownik nie zezwolenia Jestem obecnie w następujący sposób:Przekieruj do strony AccessDenied, gdy użytkownik nie jest autoryzowany

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

ta wyświetla monit login/hasło.

Moje pytanie brzmi: jaki jest zalecany sposób, aby wysłać użytkownika na stronę typu "Odmowa dostępu", gdy nie uda się autoryzacji?

Używam MVC3.

Odpowiedz

2

W końcu poszedłem do prostego przekierowania:

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

Edit: Rob Conery ma bardzo dobry artykuł opisujący to szczegółowo ASP.NET MVC: Securing Your Controller Actions

+3

Link jest zepsuty :-( – JenonD

5

na stronie logowania, można sprawdzić, czy użytkownik jest już zalogowany i wyświetli komunikat Odmowa dostępu zamiast monitu logowania.

+0

Chociaż to może działać na jednej stronie, to rozwiązanie nie działa w ogóle dla systemu jednokrotnego logowania, chyba że chcesz, aby Usługa Tokenów Bezpieczeństwa domyślnie rozumiała wszystkie role/prawa dostępu użytkownika do stron Zaufania, co byłoby bardzo niepoprawnym IMO. –

+0

jak dotąd tak dobrze +1 – Har

Powiązane problemy