1
我有一個應用程序,有兩個不同的域。他們跨越用戶模型。我設計了登錄/註銷。如何爲每個域創建會話?一個rails應用程序,兩個域,每個不同的會話
我有一個應用程序,有兩個不同的域。他們跨越用戶模型。我設計了登錄/註銷。如何爲每個域創建會話?一個rails應用程序,兩個域,每個不同的會話
編輯
您需要通過URL來標識或選擇與識別您所在的位置域。
通過域標識的示例。但是你會需要它適應環境
http://www.domain1.com
'耙G型域名:字符串,用戶: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