Разработать: перенаправить аутентифицированных пользователей на один поддомен в Rails 5 - PullRequest
1 голос
/ 17 апреля 2019

У меня есть приложение Rails 5, которое использует Devise для аутентификации пользователя и в настоящее время разделяет сеанс пользователя в основном и подчиненном домене.

Я хотел бы изменить это поведение, чтобы аутентифицированные пользователи направлялись на поддомен sub.example.com, тогда как не аутентифицированные пользователи оставались в основном домене example.com.

Решения, которые я нашел, сфокусированы на мультитенантных реализациях, однако это не мультитенантное приложение, и на данный момент мне нужно только перенаправить пользователей на один поддомен.

В настоящее время я использую пользовательский метод Devise для перенаправления аутентифицированных пользователей на запрошенный ресурс в соответствии с его / ее ролью:

def after_sign_in_path_for(resource)
  if current_user.try(:guest?)
    documents_path
  else
    stored_location_for(resource) || dashboard_path
  end
end

Может ли это быть обработано дополнительным фильтром контроллера приложений или, возможно, другим способом?

1 Ответ

0 голосов
/ 17 апреля 2019

Можно переопределить метод devise, однако вы, вероятно, захотите переместить его в свой application_controller, где у вас будет доступ к помощникам пути Rails

class ApplicationController < ActionController::Base

  def after_sign_in_path_for(resource)
    if current_user.try(:guest?)
      documents_path
    else
      stored_location_for(resource) || dashboard_path
    end
  end

  def after_sign_out_path_for(resource)
    #send them somehwere
  end

end

Тогда вам понадобится что-то подобное в config/initializers/session_store.rb

MyApp::Application.config.session_store :cookie_store, domain: '.maindomain.com'

Или, если вы хотите сеансы только для одного конкретного субдомена:

MyApp::Application.config.session_store :cookie_store, domain: 'something.rootdomain.com'
...