У меня есть 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
. Тем не менее, это не совсем то поведение, которое я хочу.