Кабель действия в приложении rails с поддоменом - квартира не работает

Rails 5, apartment gem

трос действия connection.rb

module ApplicationCable
  class Connection < ActionCable::Connection::Base
    identified_by :current_user, :tenant

    def connect
      self.tenant = request.subdomain
      Apartment::Tenant.switch!(tenant)

      self.current_user = find_verified_user
      logger.add_tags 'ActionCable', current_user.try(:email) || 'Unauthenticated User'
    end

    protected

    def find_verified_user # this checks whether a user is authenticated with devise
      if verified_user = env['warden'].user
        verified_user
      else
        # May have public users accessing the channels
        # reject_unauthorized_connection
      end
    end
  end
end

среда/производство.рб

config.action_cable.allowed_request_origins = [ /https://(.*).mydomain.com/ ]

Пробовал приведенную выше ссылку на код, взятую из этих ссылок: Ссылка 1 и Ссылка 2, но не работает.

В производстве: request.subdomain это nil (пробовал использовать горячее кодирование некоторых значений арендатора, но не работает)

В разработке: request.subdomain указывает имя арендатора, но фактический запрос не работает.

Любая помощь?

Почему в Python есть оператор &quot;pass&quot;?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
0
353
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Исправлена ​​эта проблема:

request.subdomain не работает и возвращает "". В качестве альтернативы я передал значение арендатора через строку запроса

const getWebSocketURL = () => {
    var protocol = window.location.protocol === 'https:' ? 'wss://' : 'ws://';
    var host = window.location.host;
    var path = '/cable';
    var url = protocol + host + path;
    return `${url}?tenant=mytenant`;
};

и

const wsUrl = getWebSocketURL();
const cable = ActionCable.createConsumer(wsUrl);

соединение.rb:

self.tenant = request.params[:tenant]

Также внутри ваших каналов в каждом методе должна быть ваша первая строка

Apartment::Tenant.switch!(tenant)

здесь вы можете получить значения арендатора из комнаты

см. также эти ссылки: кабель с инструкциями по настройке арендатора в действии
rails-actioncable-request-origins-субдомен

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