ASP.NET MVC: как показать конкретное представление как результат неудачной авторизации в IAuthorizationFilter - PullRequest
1 голос
/ 22 сентября 2011

У меня есть фильтр IAuthorizationFilter, который проверяет наличие определенных ролей. Если у пользователя нет указанных ролей, я хотел бы показать конкретное представление, которое говорит что-то вроде «У вас нет прав для просмотра этой страницы».

Я также хотел бы показать это представление по определенному URL, поэтому перенаправление не вариант.

Вот что я хочу:

1) Пользователь переходит в / Admin / Payments 2) / Admin / Платежи требует прав администратора 3) Пользователь не является администратором. 4) Пользователь показывает страницу, которая говорит, что он не может получить доступ к этой странице, но URL / Admin / Payments

Спасибо.

1 Ответ

3 голосов
/ 22 сентября 2011
public class MyAuthorizeAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(System.Web.HttpContextBase httpContext)
    {
        // TODO: do your authorization or if you want to keep the default
        // simlpy invoke the base method
    }

    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        filterContext.Result = new ViewResult
        {
            ViewName = "~/Views/Shared/Unauthorized.cshtml"
        };
    }
}

и затем:

[MyAuthorize(Roles = "Admin")]
public ActionResult Payments()
{
    ...
}
...