2011-02-07 2 views
1

Я пытаюсь перенаправить пользователей на последнюю страницу, с которой они вошли (с помощью модального) - который работает.Перенаправление с конкретной страницы

if user 
    # Protects against session fixation attacks, causes request forgery 
    # protection if user resubmits an earlier form using back 
    # button. Uncomment if you understand the tradeoffs. 
    # reset_session 
    self.current_user = user 
    new_cookie_flag = (params[:remember_me] == "1") 
    handle_remember_cookie! new_cookie_flag 
    format.html { 
     if @invitation.try(:invitee_email) == user.email 
     redirect_to(edit_invitation_path(@invitation)) 
     else 
     begin 
     # loop check 
     if session[:last_back] != request.env['HTTP_REFERER'] 
     redirect_to(:back) 
     session[:last_back] = request.env['HTTP_REFERER'] 
     else 
     # raise on error 
     raise ActionController::RedirectBackError 
     end 
     rescue ActionController::RedirectBackError 
     # fallback on loop or other :back error 
     redirect_to(:action => :index) 
    end 
end 

Если пользователь не может войти в систему - они перенаправляются на страницу входа в сеанс/новое.

Я не хочу, чтобы они возвращались на эту страницу после успешного входа в систему, так как бы я перенаправил их на новый/путь, если они происходят из сеанса/нового?

ответ

1

Я думаю, что есть два пути решения этой проблемы:

  1. Вместо переориентировав на входе, используйте запрос Ajax, чтобы отправлять данные и просто не перенаправляют если Логин не удается. Если вход успешно завершен, используйте javascript для перенаправления.
  2. В контроллере приложений следует использовать before_filter, который, когда пользователь выйдет из системы, сохраняет текущую страницу в сеансе как страницу перенаправления. Пропустите этот фильтр на страницах, которые вы не хотите запоминать, например, сеансы/новая страница. После входа пользователя в систему проверьте сеанс для страницы перенаправления и перенаправьте его, если он существует. Таким образом, независимо от того, сколько раз пользователь посещает сеансы/новые, они никогда не будут перенаправлены туда после входа в систему. (Вероятно, вы должны сделать то же самое и на странице выхода из системы - пропустите фильтр перед фильмом).
Смежные вопросы