similares a las soluciones sugeridas por @hellangle y @Andreas, que utiliza el código siguiente para resolver este problema:
public class CustomizedAuthorizeAttribute : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
var userAuthInfo = GetUserAuthInfo();
if (!userAuthInfo.IsAuthenticated())
{
filterContext.Result = new RedirectResult(UrlToYourLoginPage);
return;
}
if (!userAuthInfo.IsAuthorized())
{
var result = new ViewResult {ViewName = "UnAuthorized"};
result.ViewBag.Message = "Sorry! You are not authorized to do this!";
filterContext.Result = result;
}
}
}
Por supuesto, es necesario implementar la clase de información de autorización de usuario y métodos relacionados (GetUserAuthInfo, IsAuthenticated, IsAuthorized) según sus necesidades específicas. Además, una vista llamada 'UnAuthorized' debe colocarse en algún lugar que el motor MVC pueda encontrar. Entonces se puede utilizar en una clase de controlador (señalado en respuesta de @ hellangle) o un método de acción:
[CustomizedAuthorizeAttribute]
public class TargetController : Controller
{
[CustomizedAuthorizeAttribute]
public ActionResult TargetAction()
{
// Your Code
}
}
el fin de proporcionar diferente estrategia de control de acceso para diferentes clases de controlador y métodos de acción, implementa un constructor para CustomizedAuthorizeAttribute clase que acepta los parámetros que representan la información de control de acceso y luego instanciar la clase CustomizedAuthorizeAttribute en consecuencia.
jaja "no rights dude" page ... lol –