Я пытаюсь реализовать страницу с ошибкой отказа в доступе в новом проекте ASP.NET MVC 5 с режимом аутентификации индивидуальных учетных записей пользователей. добавить CustomAuthorize
класс, который наследует от AuthorizeAttribute
ASP.NET MVC 5 Обращение с запросом на отказ от авторизации
public class CustomAuthorize : AuthorizeAttribute
{
protected virtual CustomPrincipal CurrentUser
{
get { return HttpContext.Current.User as CustomPrincipal; }
}
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext.HttpContext.Request.IsAuthenticated)
{
if (!string.IsNullOrEmpty(Roles))
{
if (!CurrentUser.IsInRole(Roles))
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary(new { controller = "Error", action = "AccessDenied" }));
//base.OnAuthorization(filterContext); // returns to login url
}
}
if (!string.IsNullOrEmpty(Users))
{
if (!Users.Contains(CurrentUser.UserName))
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary(new { controller = "Error", action = "AccessDenied" }));
//base.OnAuthorization(filterContext); // returns to login url
}
}
}
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
{
base.HandleUnauthorizedRequest(filterContext);
}
else
{
filterContext.Result = new RedirectToRouteResult(new
RouteValueDictionary(new { controller = "Error", action = "AccessDenied" }));
}
}
}
добавить ErrorController.cs
public class ErrorController : Controller
{
public ActionResult AccessDenied()
{
return View();
}
}
и AccessDenied.cshtml
Просмотреть
<h2>Access Denied</h2>
<p>You do not have access to view this page</p>
затем применяется в HomeController.cs
[CustomAuthorize]
public class HomeController : Controller
, но он всегда перенаправляется на страницу входа. Как отобразить страницу отказа в доступе?
ли перенаправление идентифицированных пользователей «TestRole» на странице входа в систему в качестве Что ж? – takemyoxygen
@takemyoxygen Да, но мне нужно перенаправить на страницу AccessDenied – Willy
Я могу подтвердить, что ничего не случилось с вашими контроллерами CustomAuthorize или Error, поскольку я тестировал это в шаблоне mvc 5 с отдельными учетными записями пользователей. Проверьте мой ответ. – DSR