Как получить ActionExecutingContext из HttpContextBase - PullRequest
2 голосов
/ 17 января 2011

Я работаю над реализацией настраиваемого атрибута AuthorizeAttribute.Переопределение AuthorizeCore принимает HttpContextBase.Если у пользователя нет правильной роли, то я хочу выдать ошибку.Я нашел некоторый код, в котором я могу установить MasterName, ViewName и т. Д. Для перенаправления пользователя.Он использует ActionExecutingContext:

private void ThrowError(ActionExecutingContext filterContext, string message)
  {
   var ex = new Exception(message);
   var errorInfo = new HandleErrorInfo(ex, filterContext.ActionDescriptor.ControllerDescriptor.ControllerName, filterContext.ActionDescriptor.ActionName);
   var viewData = new ViewDataDictionary(errorInfo);

   filterContext.Result = new ViewResult { MasterName = MasterName, ViewName = ViewName, ViewData = viewData };
  }

Возможно ли получить ActionExecutingContext из HttpContextBase, переданного в переопределение AuthorizeCore?Если нет, какие-либо предложения?

Спасибо за вашу помощь.

1 Ответ

2 голосов
/ 18 января 2011

В методе AuthorizeCore вам не нужно выполнять никаких перенаправлений. Вам просто нужно использовать Http Context, чтобы вернуть true или false в зависимости от того, авторизован ли пользователь и авторизован ли. Чтобы перенаправить его на страницу с ошибкой, вам необходимо переопределить метод HandleUnauthorizedRequest, где AuthorizationContext передается в качестве аргумента, и вы можете обработать регистр. Этот метод будет вызван, когда AuthorizeCore вернет false, чтобы вы могли действовать соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...