У меня есть одно приложение с двумя разными доменами. Они пересекаются в модели пользователя. У меня есть Devise для входа/выхода. Как сделать сеанс для каждого домена?Одно приложение для рельсов, два домена, разные сеансы для каждого
1
A
ответ
1
EDIT
Вы должны определить по URL или определить с выбором с областью, где вы находитесь.
пример идентификации по домену. Однако вам нужно будет адаптировать его к среде
http://www.domain1.com
`грабли г модель доменного имени: строка, пользователя: belongs_to
# domain.rb
Class Domain < ActiveRecord::Base
belongs :user
end
# user.rb
Class User < ActiveRecord::Base
...
has_many :domains
end
в вашем рельсовом пульте
User.find(1).domains.create(name:'www.domain1.com')
User.find(1).domains.create(name:'www.domain2.com')
# application_controller.rb #EDITED
helper_method :current_domain
def current_domain
domain = request.host
Domain.find_by_name(domain)
end
вам нужно изменить вам новый контроллер сессий
# приложение/просмотров/сессии/new.html.slim
<%= f.hidden_field :user, :domain_id, value: current_domain.try(:id)
в вашем config/initializer/devise.rb
config.authentication_keys = [ :email, :domain_id ]
# приложение/модели/user.rb
devise authentication_keys: {email:true, login:false, domain_id:true}
def self.find_first_by_auth_conditions(warden_conditions)
conditions = warden_conditions.dup
domain_id = conditions.delete(:domain_id)
where(conditions).joins(:domains).where('domains.id = :value', {:value => domain_id }).first
end
пользователи разделены между доменами – stereodenis
'application_controller.rb' вместо' application.rb' –
попытается его скоро – stereodenis