Вот мой сценарий:
Примечание: Когда вы впервые регистрируетесь, вы заполняете форму, она переводит вас на страницу приветствия и вы нажимаете кнопку, чтобы продолжить, которая переводит вас на страницу настроек для настройки вашего профиля, прежде чем вы получите доступ к приложению.
Примечание: сеанс приложения составляет 5 часов при активном входе в систему
Однако, когда пользователь регистрируется, и они перенаправляются на страницу приветствия, и на данный момент, допустим, например, произошла чрезвычайная ситуация, и он или она не завершили этапы регистрации, перейдя к следующему этапу, который является настройками, когда он / она получает назад, он / она перенаправляется на страницу настроек
Вот что я сделал ниже, и это не сработает для меня, когда пользователь, который ушел в аварийной ситуации, возвращается, что, как предполагается, приведет его / ее к пути / странице настроек.
Что я сделал, но не работает
Я создал новый метод в контроллере приложения и передал его в действие create для перенаправления на этот путь, однако я не думаю, что это лучшее решение.
sessions_controller создать действие
def create
if verify_recaptcha
@member = Member.from_auth(auth_hash)
end
if @member
if @member.disabled?
increase_failed_logins
redirect_to signin_path, alert: t('.disabled')
else
clear_failed_logins
reset_session rescue nil
session[:member_id] = @member.id
save_session_key @member.id, cookies['_peatio_session']
save_signup_history @member.id
MemberMailer.notify_signin(@member.id).deliver if @member.activated?
if @member.disabled?
redirect_back_or_settings_page # here is the method
else
redirect_back_to_success_page # here is the method
end
end
elsif (!verify_recaptcha)
redirect_to signin_path, alert: t('.put_capture')
else
increase_failed_logins
redirect_to signin_path, alert: t('.error')
end
end
соответствующий метод в контроллере приложения
def redirect_back_or_settings_page
if cookies[:redirect_to].present?
redirect_to cookies[:redirect_to]
cookies[:redirect_to] = nil
else
redirect_to settings_path
end
end
def redirect_back_to_success_page
if cookies[:redirect_to].present?
redirect_to cookies[:redirect_to]
cookies[:redirect_to] = nil
else
redirect_to signup_success_index_path
end
end
Как мне с этим справиться?
Не могли бы вы уточнить «на примере чрезвычайной ситуации»? Если что-то может сломаться в этом, это могло бы повлиять на процесс регистрации. Я бы обернул все это в блок begin ... rescue, чтобы гарантировать, что они всегда получают правильный ответ от сервера.
Вы также хотите убедиться, что фактическое состояние их «пользователя» сохраняется в базе данных. Если что-то пойдет не так во внешнем интерфейсе, это не должно повлиять на то, что знает сервер. Никогда не доверяйте клиенту.
Вот как должен проходить вход в систему:
Вы слышали о разработке, кстати? Делает это намного проще.
Ваше здоровье!