Передача данных из AuthorizeCore в HandleUnauthorizedRequest, а затем действие в ASP.NET MVC4

У меня есть индивидуальная реализация AuthorizeAttribute которые обрабатывают несанкционированный доступ пользователей, если я переопределить следующие методы: AuthorizeCore, затем HandleUnauthorizedRequest,

  • Логика для проверки доступа пользователя находится в AuthorizeCore.
  • Перенаправление на контроллер / действие находится в HandleUnauthorizedRequest,

Теперь я хотел бы знать, как я могу отправить данные из AuthorizeCore в контроллер / действие? Следуя этой последовательности:

  1. AuthorizeCore создать сообщение.
  2. HandleUnauthorizedRequest сделать перенаправление и передать ранее созданное сообщение.
  3. Контроллер / действие получают сообщение.

Примечание: я не хочу получать сообщение через QueryString.

2 ответа

Попробуй это;

public string Messages { get; set; } // declare "Messages"
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
     Messages = "bla bla";// Or set in controller
     ....
     ....
     ....
     ....
     base.AuthorizeCore(httpContext); 
}


protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
   Messages.ToString(); // Read Message ="bla bla"
   base.HandleUnauthorizedRequest(filterContext);
}

2. Способ установки сообщения с использованием контроллера;

[CustomAuthorize(Messages = "Bla Bla Bla")]
public ActionResult Index()
{
    return View();
}

Есть несколько способов сделать это. Вы можете попробовать добавить:

filterContext.Controller.TempData["auth_fail_message"] = "Error message"; 

в методе HandleUnauthorizedRequest. Затем вы можете получить доступ к временным данным из-за ошибки.
Вы также можете использовать объект сеанса asp.net.

Другие вопросы по тегам