2011-06-13 20 views
5

He creado un AuthorizationAttribute personalizado que colocaré en mis controladores. Seguí this article. Implementé una lógica de autorización personalizada en el método OnAuthorization y esto funciona bien. Cuando el usuario falla la autorización, actualmente estoy haciendo lo siguiente:Redirigir a la página AccessDenied cuando el usuario no está autorizado

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

Esto muestra una solicitud de nombre de usuario/contraseña.

Mi pregunta es ¿cuál es la forma recomendada de enviar al usuario a una página de tipo "Acceso denegado" cuando fallan las autorizaciones?

Estoy usando MVC3.

Respuesta

2

Al final me fui para una redirección recta:

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

Editar: Rob Connery tiene un muy buen artículo que describe esto en detalle con ASP.NET MVC: Securing Your Controller Actions

+3

El enlace está roto :-( – JenonD

5

En la página de inicio de sesión, se puede comprobar si el usuario ya está conectado y mostrar un mensaje de acceso denegado en lugar de la pantalla de entrada.

+0

Si bien esto podría funcionar en un solo sitio, esta solución no funciona en absoluto para un sistema de inicio de sesión único a menos que desee que el Servicio de token de seguridad comprenda implícitamente todos los roles/derechos de acceso de los usuarios a sus sitios de Parte que confía, lo que sería una OMI muy incorrecta. –

+0

hasta ahora todo bien +1 – Har

Cuestiones relacionadas