У меня есть настраиваемый фильтр действий, который внутри OnActionExecuting
, в зависимости от определенных критериев, выводит пользователя из системы и перенаправляет его на главную страницу сайта. (Раздели назад) код для перенаправления части нижеНастройка TempData в ActionFilterAttribute
filterContext.Controller.TempData.Add("key", "Message");
filterContext.Result = new RedirectResult("/");
Как и выше, я также установка сообщение TempData. Поскольку пользователь вышел из системы, когда они попали на главную страницу, атрибут [Authorize]
перенаправит их на страницу входа GET. В представлении входа я показываю любые сообщения из tempData. Однако в этой ситуации tempData пуст.
Это очень похоже на то, как работает мой логин POST (если он недействителен, он перенаправляет на дом, который перенаправляет логин и отображает сообщение tempData, которое было установлено в сообщении «Вход»). Этот код можно увидеть ниже
TempData.Add("key", errorMessage);
return Redirect("/"));
Причина я делаю это так, а не перенаправлять конкретно на страницу входа в систему происходит потому, что этот код распространяется на многих сайтах, поэтому мы не знаем, что Логин GET URL является ,
У кого-нибудь есть информация, почему это работает для входа в систему POST, но не для Перенаправления ActionFilter?
Edit:
Если я удалить вызов выхода из системы в фильтре действия Выборочная, TempData все еще установлен в главном действии - однако это оленья кожа объяснить, почему это работает для входа POST, но не действие фильтра?
То, что я делаю после - я хочу, чтобы клиент запросил новый URL-адрес. Причина, по которой TempData была пуста, была связана с отказом от сеанса. – Rob