Вы можете создать свой собственный атрибут авторизации следующим образом:
public class ClubAuthorizeAttribute : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
if (filterContext.Cancel && filterContext.Result is HttpUnauthorizedResult)
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary {
{ "clubShortName", filterContext.RouteData.Values[ "clubShortName" ] },
{ "controller", "Account" },
{ "action", "Login" },
{ "ReturnUrl", filterContext.HttpContext.Request.RawUrl }
});
}
}
}
Я использовал это для перенаправления в определенный клуб на сайте членства в клубе, который я создаю. Вы можете адаптировать это к вашим потребностям. Кстати, в моем случае я перенаправляю на страницу входа в систему, но я проверяю, авторизован ли пользователь, и если да, отображает сообщение о том, что у него нет правильных разрешений. Без сомнения, вы также можете добавить что-то в ViewData или TempData для отображения на странице, но я не пробовал это
EDIT
AuthorizationContext.Cancel больше не существует в RC. "filterContext.Result is HttpUnauthorizedResult" кажется достаточным: Что случилось с filterContext.Cancel (ASP.NET MVC)