Я полностью зациклен на этом. В принципе, у меня есть страница MVC с пользовательским атрибутом AuthorizeAttribute, который выдает ошибку 403, если пользователь аутентифицирован, но не имеет соответствующего доступа. Проблема, с которой я сталкиваюсь, заключается в том, что я хотел бы перенаправить эту ошибку на пользовательский контроллер/действие (/ Error/Unauthorized).IIS7.5 HttpErrors ExecuteURL не исполняется
Я добавил следующее в моем web.config
<httpErrors errorMode="Custom">
<remove statusCode ="403" subStatusCode="-1"/>
<error statusCode="403" path="/Error/Unauthorized" responseMode="ExecuteURL" />
</httpErrors>
С выше конфигурации, я не вижу, по умолчанию IIS 7.5 403 редирект. Однако я ничего не вижу. В IE это говорит мне, что на веб-сайте вам нужно войти в систему, а хром просто показывает мне пустую страницу.
Любые идеи?
Вот пользовательский код авторизации в случае, может помочь
public class CustomAuthorize : AuthorizeAttribute
{
//Property to allow array instead of single string.
private string[] _authorizedRoles;
public string[] AuthorizedRoles
{
get { return _authorizedRoles ?? new string[0]; }
set { _authorizedRoles = value; }
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
base.HandleUnauthorizedRequest(filterContext);
if (filterContext.HttpContext.Request.IsAuthenticated)
{
filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;
filterContext.Result = new HttpStatusCodeResult(403);
}
}
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (httpContext == null)
throw new ArgumentNullException("httpContext");
if (!httpContext.User.Identity.IsAuthenticated)
return false;
//Check to see if any of the authorized roles fits into any assigned roles only if roles have been supplied.
if (AuthorizedRoles.Any(httpContext.User.IsInRole))
return true;
return false;
}
}
КИ, просто пытаюсь играть с некоторыми различными сценариями, я добавил свой CustomErrors раздел в раздел system.web и попыталась это с 404. В этом случае (в связи с TrySkipIisCustomErrors я полагаю), я что мне даже не нужен раздел httpErrors. Однако, если я попытаюсь добавить 403, страница все равно не будет решена. Это то, как браузеры интерпретируют 403? Не разрешат ли они перенаправить 403? –