[Authorize]
atributo es agradable y práctico invención EM, y espero que pueda resolver los problemas que tengo ahoraCómo hacer Autorizar atributo volver encargo 403 página de error en lugar de redireccionar a la página de inicio de sesión
Para ser más específicos:
Cuando el cliente actual no está autenticado - [Authorize]
redirige desde la acción segura a la página de inicio de sesión y después de que el inicio de sesión fue exitoso - devuelve al usuario, esto es bueno.
Pero cuando el cliente actual ya está autenticado pero no está autorizado para ejecutar una acción específica, todo lo que necesito es simplemente mostrar mi página general 403.
¿Es posible sin mover la lógica de autorización dentro del cuerpo del controlador?
actualización: El comportamiento que necesito en debe ser semánticamente es igual a este bosquejo:
public ActionResult DoWork()
{
if (!NotAuthorized())
{
// this should be not redirect, but forwarding
return RedirectToAction("403");
}
return View();
}
así - no debe sin ninguna redirección y url debe permanecer igual, pero el contenido de la página debe ser reemplazado con 403 páginas
actualización 2: he implementado boceto de esta manera:
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
[CustomActionFilter]
public ActionResult About()
{
return View();
}
public ActionResult Error_403()
{
return Content("403");
}
}
public class CustomActionFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.Result = new ContentResult { Content = "403" };
}
}
y no puede obtener la forma de ejecución adecuadamente hacia adelante a HomeController.Action_403() por lo que mostrar 403.
Actualización 3:
filterContext.Result = new ViewResult() { ViewName = "Error_403" };
por lo que esta es una respuesta en el modo de hacer específica ver plantilla ... pero todavía no tengo idea de cómo ejecutar otro controlador, de todos modos, es una solución bastante buena.
@casperOne: ¿por qué demonios que haya añadido el comentario, ya que era de mi persona ??? – zerkms
El comentario en el lado dificulta la legibilidad del código. Colocarlo arriba evita que aparezcan las barras de desplazamiento, y es solo parte del proceso de limpieza. – casperOne
@casperOne: soy un idiota y necesito gafas, lo siento ;-( – zerkms