Как замаскировать мою целевую страницу, когда пользователь не вошел в систему?

Я построил свою веб-платформу на Ruby on Rails в https://example.com

Мой лендинг и страницы с информацией о них размещены в Wordpress на другом хосте по адресу https://examplecms.com.

Я хотел бы добиться, чтобы пользователи, посещающие https://example.com, получали маскировку https://examplecms.com, за исключением тех случаев, когда они вошли в систему, поскольку панель мониторинга моей платформы направляется по корневому пути /.

Чего я пытаюсь избежать, так это того, чтобы пользователь видел в URL-адресе https://examplecms.com.

Я пробовал пока пару уловок:

  • В моем контроллере действий home / index я перенаправлен на https://examplecms.com, если пользователь не вошел в систему. Но это не удается, поскольку он по-прежнему показывает URL-адрес CMS в браузере пользователя.
  • Использование iframe при рендеринге домашнего / индексного представления, указывающего на сайт CMS. Это работает, потому что он по-прежнему правильно отображает URL-адрес моего сайта, но это кажется подозрительным, а также глубокие ссылки и навигация, похоже, не работают правильно.

Я думал о том, чтобы сделать это на уровне прокси-сервера, используя .htaccess или даже используя стратегии DNS, но я не могу найти решение для этих стратегий, чтобы определить, когда пользователь вошел в систему или нет?

Любые идеи?

Спасибо

Обновлять: Куча:

  • Ubuntu
  • Рубин на рельсах
  • Nginx + пассажир
  • Amazon Ec2 + Cloudflare DNS

Если вы используете nginx, у него есть опция для внутреннего перенаправления - nginx.com/resources/wiki/start/topics/examples/x-accel Я не использовал его для этого конкретного варианта использования. Постараюсь посмотреть, смогу ли я воссоздать то, что вам нравится, но вы должны попробовать, если у вас есть готовая установка

Sinstein 18.04.2018 20:05

Другой грубый способ сделать это - загрузить examplecms через javascript / jquery после того, как ваш сервер ответит информацией об авторизации. Что-то вроде $("body").load(" https://examplecms.com");

Sinstein 18.04.2018 21:17

Вы пробовали nginx.org/en/docs/http/…? Это должно быть просто, если вы можете предоставить конечную точку для nginx для проверки аутентификации, а затем вы можете перенаправить клиента на основе того же

Tarun Lalwani 23.04.2018 12:35

Были ли ответы на ваш вопрос? Если да, будьте любезны принять и / или присудить награду. Если вы не выполните никаких действий в течение 16 часов после льготного периода, по крайней мере половина суммы вознаграждения будет безвозвратно потеряна.

cnst 23.04.2018 21:15
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
7
4
187
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

То, что вы ищете, - это объемы маршрутов. Я использую Devise для аутентификации, который предоставляет помощников для выполнения того, что вы хотите, но я не сомневаюсь, что вы можете приспособиться к своим потребностям. Когда пользователь попадает на любую страницу сайта, он автоматически перенаправляется на логин. Если они вошли в систему, они перенаправляются на домашнюю страницу / URL-адрес, который они ввели.

authenticated :user do
  root to: 'titles#index'
end

devise_scope :user do
  root to: 'devise/sessions#new'
end

Это не сработает, потому что мне нужно замаскировать другой URL-адрес внутри URL-адреса моего сайта, поэтому маршрутизация не покрывает это

David Mauricio 23.04.2018 23:55
Ответ принят как подходящий

Вы можете использовать http://nginx.org/r/proxy_pass, чтобы незаметно перенаправить пользователя на другую страницу, не изменяя URL-адрес, который отображается пользователю в поле Location браузера.

Чтобы проверить, вошел ли пользователь в систему, вы можете установить обработчик ошибок через http://nginx.org/r/error_page, чтобы перенаправить пользователя, только если ваша обычная страница возвращает ошибку (например, если обычный proxy_pass приводит к ответу 403 Forbidden, затем перенаправьте запрос пользователя на альтернативный proxy_pass в восходящем направлении согласно обработчику ошибок).

Я понимаю, что вы говорите. Вы думаете, что с некоторым регулярным выражением, которое указывает, что я нахожусь на домашнем пути (/), он должен отображать URL-адрес другого моего сайта.

David Mauricio 24.04.2018 00:00

Но это покрывает только половину. Если пользователь вошел в систему и запрашивает /, тогда он отобразит сайт, переданный через прокси, как указать, что директива передачи прокси игнорируется при входе в систему? Возможно я не понял часть обработчика ошибок

David Mauricio 24.04.2018 00:02

Что ж, это действительно должно быть решено в серверной части на стороне приложения; просто это также можно решить в nginx, поэтому мой ответ из-за того, что вы пометили тег Q w / nginx. :) Что касается обработки ошибок, ожидается, что серверная часть вернет код ошибки 403 только тогда, когда пользователь не аутентифицирован, что приведет к активации error_page (например, error_page =403 @nonauth;), который затем выполнит несвязанный proxy_pass, который скроет реальный URL (location @nonauth {proxy_pass http://...;}).

cnst 24.04.2018 00:24

Создать поддомен

Для вашего веб-контента, размещенного на WordPress, вы можете создать очень простой поддомен у своего хостинг-провайдера, например, так blog.example.com, который является псевдонимом examplecms.com

Использовать Device Gem для аутентификации

Вы можете использовать гем устройства для аутентификации пользователя и перенаправления пользователя на поддомен. Когда пользователь попадает в / root_path.

Да, это работает, но не соответствует описанным требованиям.

David Mauricio 22.04.2018 21:20

Другие вопросы по теме