2012-03-20 2 views
0

У пользователя есть 2 способа добраться до этого веб-сайта MVC3.Нужно перенаправить туда, откуда пользователь пришел из таймаута сеанса

  1. Через экран регистрации.
  2. Перенаправление с другого сайта.

В настоящее время я показываю страницу времени сеанса, если сеанс отключен. Тем не менее, бизнес теперь хочет перенаправить пользователя обратно туда, откуда он пришел с таймаутом сеанса.

Как я узнаю откуда пользователь?

К тому времени, когда я вышел из сессии, я даже не знаю, кем был пользователь. Хотя это не изменит ситуацию, поскольку один и тот же пользователь может прийти из любого места.

ответ

0

Tricky. Вы можете использовать аналогичную технику для того, что происходит, когда вы запрашиваете страницу, требующую аутентификации. В этом случае вы перенаправляетесь на действие входа, но исходный запрос добавляется в строку запроса с http://localhost/Account/Login?returnUrl={your original request here}, чтобы вы были отправлены на свою исходную запрашиваемую страницу после аутентификации.

В вашем случае вам нужно сохранить текущую сессию входящего HTTP_REFERER на странице входа в систему, а затем добавить это как '? ReturnUrl =' для каждой ссылки на страницу выхода. Затем вам придется добавить код к методу контроллера Logout для обработки перенаправления.

Обратите внимание, что этот метод не будет работать с глубокой привязкой к ограниченным страницам auth (как описано в первом абзаце), поскольку для этого потребуется два перенаправления. В этот момент реферер недействителен.

+0

hah! Благодаря! Вы как-то начали думать в направлении. Позвольте мне посмотреть, согласны ли они с дополнительными материалами в строке запроса. Если нет, я могу просто отказаться от этого требования. – Dimskiy