Вы можете / должны переопределить HandleUnauthorizedRequest
вместо OnAuthorization
. Вот реализация по умолчанию:
protected virtual void HandleUnauthorizedRequest(AuthorizationContext filterContext) {
// Returns HTTP 401 - see comment in HttpUnauthorizedResult.cs.
filterContext.Result = new HttpUnauthorizedResult();
}
Вы не можете использовать Controller.RedirectToAction
, но вы можете вернуть новый RedirectToRouteResult
.
Так что вы можете сделать:
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) {
// Returns HTTP 401 - see comment in HttpUnauthorizedResult.cs.
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary
{
{ "action", "ActionName" },
{ "controller", "ControllerName" }
});
}