У меня есть сайт, который разделен на сторону приложения и сторону WordPress. WordPress имеет текст c, который клиент может легко обновить, размещенный в Google. Сторона приложения сделана в Rails с использованием Devise для аутентификации и размещена на Heroku.
Я бы хотел перенаправить на сайт WordPress после того, как пользователь вышел из системы, и использую after_sign_out_path_for для выполнения sh этого. Локально работает нормально, но на производстве я получаю неправильное поведение.
Пользователь нажимает кнопку «Выйти», и браузер перенаправляет на сайт WordPress, как и ожидалось. Однако пользователь фактически не вышел из системы! Если они нажимают на кнопку «Войти», они направляются прямо в путь root_path без необходимости вводить свои учетные данные. Или, если они перейдут, например, к https://www.theappsite.com/users/edit или https://www.theappsite.com/subscriptions/new (оба из которых имеют before_action: authenticate_user!), Они могут получить к ним доступ, не вводя свои учетные данные.
Примечательно - я не могу дублировать это локально. Это происходит только в производстве. Локально, я получаю перенаправление, и пользователь должен повторно аутентифицироваться, если они нажимают «Войти».
Моя интуиция заключается в том, что сеанс или готовка ie не разрушаются до того, как происходит перенаправление, но я не знаю, почему это произойдет только в производстве ... любой совет будет оценен!
application_controller
def after_sign_out_path_for(resource_or_scope)
# redirect to the wordpress site
if Rails.env.production?
'https://www.thewordpresssite.com'
else
#testing...
'https://www.google.com'
end
end
views / nav_bar. html .haml
%li.has-dropdown
%a Account
%ul.dropdown
%li= link_to 'My Profile', edit_user_registration_path
%li= link_to 'Subscriptions', accounts_path
%li= link_to 'Payment Methods', payment_methods_path
%li.fa-sign-in-alt= link_to 'Sign out', destroy_user_session_path, method: 'delete'