Вернуть пользователя на предыдущую страницу после входа в систему (Rails) - PullRequest
10 голосов
/ 29 февраля 2012

На сайте rails 2.3.8 у меня есть ссылки для входа на каждую страницу (которая выводит пользователя на отдельную страницу входа). После успешного входа в систему пользователь в настоящее время перенаправлен в root. Вместо этого я хотел бы перенаправить на страницу, которую они просматривали ранее.

Я пытался использовать request.referer:

redirect_back_or_default(request.referer)

Где redirect_back_or_default:

def redirect_back_or_default(default)
    redirect_to(session[:return_to] || default)
    session[:return_to] = nil
end

Но это приводит к ошибке «Отказано в доступе», даже если вход выполнен успешно.

1 Ответ

16 голосов
/ 02 марта 2012

Вместо того, чтобы пытаться перенаправить к рефереру, я бы установил сеанс [: return_to]

Вам понадобится фильтр before, который запускается перед вашей аутентификацией для всех ваших действий:

def store_return_to
  session[:return_to] = request.url
end

Затем измените перенаправление на

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