Ну, я понял это сам.
Так что, по сути, мне нужно было не «перенаправление».Я искал не в том месте, чтобы решить мою проблему.Я знал, что перенаправление означало, что мне нужно было совершить несколько поездок клиент / сервер только для того, чтобы иметь возможность вернуть результат json, и это было неправильно.
Мне потребовалось время, чтобы понять, что я могупередать любой тип результата в filterContext.Result.
Это моя вина.Я не задавал правильный вопрос, потому что я не полностью понимал проблему, с которой столкнулся.После долгих исследований все сводится к тому, чтобы быть по-настоящему глупым.
Конечное решение:
public class CheckLoginAttribute : AuthorizeAttribute, IAuthorizationFilter
{
private RolesEnum expectedRole;
public CheckLoginAttribute(RolesEnum role)
{
expectedRole = role;
}
public override void OnAuthorization(AuthorizationContext filterContext)
{
User user = filterContext.HttpContext.Session["user"] as User;
if (user == null || user.Role != expectedRole)
{
filterContext.Result = new JsonResult()
{
JsonRequestBehavior = JsonRequestBehavior.AllowGet,
Data = new LoginMessage() { IsValidLogin = false }
};
}
}
}
И теперь я могу украсить свои методы действия с помощью этого:1014 * Немного больше кода, чтобы избежать кражи сеанса ASP.NET, и все готово.
Надеюсь, это кому-нибудь поможет.Спасибо.