我有一个应用程序,有两个不同的域。他们交叉进入用户模型。我已经想好要登记[退出]。如何为每个域创建会话?
发布于 2016-08-19 14:40:19
编辑
您需要通过url进行标识,或者使用select与您所在的域进行标识。
按域标识的示例。然而,您将需要使其适应您的环境。
http://www.domain1.com
` `rake g模型域名:string,user:belongs_to
#domain.rb
Class Domain < ActiveRecord::Base
belongs :user
end#user.rb
Class User < ActiveRecord::Base
...
has_many :domains
end在rails控制台中
User.find(1).domains.create(name:'www.domain1.com')
User.find(1).domains.create(name:'www.domain2.com')#application_controller.rb #编辑
helper_method :current_domain
def current_domain
domain = request.host
Domain.find_by_name(domain)
end您需要修改会话控制器中的新内容。
#app/查看/会话/new.html.slm
<%= f.hidden_field :user, :domain_id, value: current_domain.try(:id)在配置/初始化程序/devise.rb中
config.authentication_keys = [ :email, :domain_id ]#app/model/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
endhttps://stackoverflow.com/questions/39040616
复制相似问题