Перенаправлять пользователя после входа только если он находится на root_path

У меня есть root_path в моем Rails-приложении, которое не защищено пользователем, т.е. это простая домашняя страница портала с формой входа.

После того, как пользователи войдут, я бы хотел, чтобы они перешли на dashboard_path.

Я сделал вот что:

def signed_in_root_path(scope_or_resource)
  dashboard_path
end

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

т.е.:

restricted_page -> login -> restricted_page_but_logged_in

Я не хочу менять это поведение, и поэтому я не использовал after_sign_in_path, но хочу перенаправить его, если он находится на root_path, или любом маршруте, который не требует аутентификации пользователя.

Моя проблема в том, что это не работает. После входа я получаю перенаправление обратно на root_path, что, как я полагаю, происходит из-за того, что after_sign_in_path срабатывает раньше.

Есть ли какой-нибудь способ сделать это? Спасибо!

Edit: Это работает во второй раз, когда я вхожу в систему, т.е. я перехожу на root_path, вхожу, получаю флэш-сообщение о том, что я вошел, и снова ввожу имя пользователя и пароль в форме на root_path. Я успешно перенаправляюсь на dashboard_path. Тем не менее, это не совсем то поведение, которое я хочу.

10
задан Pedro Nascimento 27 December 2011 в 01:11
поделиться