У меня есть приложение MVC Asp.net, которое использует WSFederationAuthentication для управления аутентификацией. Я делаю серию вызовов внутри действия контроллера, и эти вызовы могут привести к необходимости повторной аутентификации. Прямо сейчас, когда я определяю, что мне нужно повторить проверку подлинности, я бросаю исключение UnauthorizedAccessException.Перенаправление принудительной федеративной аутентификации из фильтра исключения
Я реализовал ExceptionFilter для контроллера, который улавливает этот UnauthroizedAccessException и возвращает 401. Вот код:
public void OnException(System.Web.Mvc.ExceptionContext context)
{
if (context.Exception is UnauthorizedAccessException)
{
context.Result = new HttpUnauthorizedResult("Login again.");
context.ExceptionHandled = true;
return;
}
}
Проблема заключается в том, что проверка подлинности Федеративные HttpModule не перенаправляет этот запрос на СТС , Пользователь просто получает ошибку 401. Является ли ExceptionFilter слишком поздно в конвейере для возврата 401? Есть ли другой способ заставить пользователя снова пройти проверку подлинности?
Это не работает, потому что «это» не является контроллером. ExceptionFilter реализован как собственный класс, и RedirectToAction не представляется доступным. – Corez
Ответ обновлен. –
Я пошел с № 1 выше. Отлично. Благодаря! – Corez