首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >一个rails应用程序,两个域,每个域的不同会话

一个rails应用程序,两个域,每个域的不同会话
EN

Stack Overflow用户
提问于 2016-08-19 13:44:50
回答 1查看 210关注 0票数 1

我有一个应用程序,有两个不同的域。他们交叉进入用户模型。我已经想好要登记[退出]。如何为每个域创建会话?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-19 14:40:19

编辑

您需要通过url进行标识,或者使用select与您所在的域进行标识。

按域标识的示例。然而,您将需要使其适应您的环境。

http://www.domain1.com

` `rake g模型域名:string,user:belongs_to

#domain.rb

代码语言:javascript
运行
复制
Class Domain < ActiveRecord::Base
  belongs :user
end

#user.rb

代码语言:javascript
运行
复制
Class User < ActiveRecord::Base
...
  has_many :domains
end

在rails控制台中

代码语言:javascript
运行
复制
 User.find(1).domains.create(name:'www.domain1.com')
 User.find(1).domains.create(name:'www.domain2.com')

#application_controller.rb #编辑

代码语言:javascript
运行
复制
helper_method :current_domain

def current_domain
  domain = request.host
  Domain.find_by_name(domain)
end

您需要修改会话控制器中的新内容。

#app/查看/会话/new.html.slm

代码语言:javascript
运行
复制
<%= f.hidden_field :user, :domain_id, value: current_domain.try(:id)

在配置/初始化程序/devise.rb中

代码语言:javascript
运行
复制
config.authentication_keys = [ :email, :domain_id ]

#app/model/user.rb

代码语言:javascript
运行
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39040616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档