#asp.net-mvc-3 #redirect
#asp.net-mvc-3 #перенаправление
Вопрос:
Я работаю над приложением администратора для другого приложения. В приложении есть несколько организаций. Администраторы могут иметь права администратора в одной или нескольких организациях.
Я хотел бы заставить пользователей выбирать «текущую организацию» для работы сразу после входа в систему. Я также хотел бы принудительно возвращать пользователей на эту страницу, если они переходят прямо на внутреннюю страницу без установки этой информации, как это происходит со страницами входа в систему и аутентификацией форм.
Я бы хотел перенаправить обратно на запрошенную страницу после отправки, если пользователь фактически был вынужден вернуться на страницу «выбрать текущую организацию», как это происходит с проверкой подлинности форм.
Я думаю, что это, вероятно, можно сделать довольно просто с помощью фильтров действий, но на данный момент я не знаю, как это сделать. Может кто-нибудь указать мне правильное направление?
Ответ №1:
Я думаю, вам нужен пользовательский базовый класс контроллера.
Попробуйте поместить логику в эти:
protected virtual void OnActionExecuted(ActionExecutedContext filterContext);
protected virtual void OnActionExecuting(ActionExecutingContext filterContext);
Вот еще немного информации…
// Use these to get current url info
filterContext.HttpContext.Request.RawUrl
// use this to get current route info
filterContext.RouteData
// use this to redirect
filterContext.Result
Комментарии:
1. Большое вам спасибо. Можно ли извлечь предполагаемый URL-адрес из параметра контекста фильтра? Нужно ли мне изменять контекст фильтра перед перенаправлением моего пользователя?
2. В MVC3 вы можете сделать это как глобальный атрибут ActionFilterAttribute, поэтому вам не нужно беспокоиться о наследовании контроллера.