Передача данных из AuthorizeCore в HandleUnauthorizedRequest, а затем действие в ASP.NET MVC4
У меня есть индивидуальная реализация AuthorizeAttribute
которые обрабатывают несанкционированный доступ пользователей, если я переопределить следующие методы: AuthorizeCore
, затем HandleUnauthorizedRequest
,
- Логика для проверки доступа пользователя находится в
AuthorizeCore.
- Перенаправление на контроллер / действие находится в
HandleUnauthorizedRequest
,
Теперь я хотел бы знать, как я могу отправить данные из AuthorizeCore в контроллер / действие? Следуя этой последовательности:
AuthorizeCore
создать сообщение.HandleUnauthorizedRequest
сделать перенаправление и передать ранее созданное сообщение.- Контроллер / действие получают сообщение.
Примечание: я не хочу получать сообщение через 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.