ruby-on-rails - 设计多个并发登录

标签 ruby-on-rails devise

我有一个现有的 Rails 3 站点。本网站使用 Devise 登录。

现在我需要添加一个带有单独登录名的子站点。假设它位于 mysite.com/special。每个访问/special 的人都需要使用与主站点不同的凭据集登录。这些凭据对主站点无效,但它们必须同时能够登录到主站点并在两个站点中保持登录状态。

使情况稍微复杂一点的是,“特殊”用户能够冒充一部分普通用户。如果他们真的要冒充、退出冒充等等,他们必须保持登录到特殊站点,直到他们在那里明确退出。

我最初的想法是为整个子站点使用一个单独的 session cookie,但我不知道该怎么做。我试过设置类似这样的东西,但在这一点上几乎是猜测。

scope '/special' do 
    devise_for :special_users, :controllers => { :sessions => "special/sessions" }, :skip => "registrations", :module => "special_users"
    unauthenticated do
      as :special_user do
        root :to => 'special/sessions#new'
      end
    end
end  

不幸的是,我对 Rails 有点陌生,这似乎相当复杂。 Devise 甚至有可能吗?如果可以,有人对如何去做有任何指示吗?

最佳答案

事实证明,这就是作用域的用途。当你知道他们怎么调用它时,一切都变得更有意义了;)无论如何,Qumaras 上面的评论实际上是在正确的 rails 上),而且教程和维基通常是很好的信息来源。一种可能的方法:

  devise_for :spuser, :controllers => { :sessions => "sp/spusers/sessions"}
  as :spuser do # as = equiv. to devise_scope
    # add spuser specific items here, such as:
    unauthenticated :spuser do
      root :to => 'sp/spusers/sessions#new'
    end
  end

然后,如果您想以普通用户身份登录另一个选项卡,您可以在 Controller 中执行此操作。

def impersonate
  @user = User.first
  sign_in(:user, @user)
  redirect_to '/main'
end

然后将模拟 Action 连接到 routes.rb

resources :regularcustomers do
  member do
    get :impersonate
  end
end

然后你可以在 View 中调用它:

<%= link_to @customer.name, impersonate_regularcustomers_path(@customer), :target => 'impersonationtab' %>

关于ruby-on-rails - 设计多个并发登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13798834/

相关文章:

ruby-on-rails - CSS 设计不均匀?

ruby-on-rails - devise的sign_in是做什么的

ruby-on-rails - rails : Customize Devise Confirmable module?

ruby-on-rails - Rails 5 设计 omniauth-facebook 错误 : Sorry, 出错了

mysql - 无法抓取 db :migrate because of mysql missing . frm 文件

ruby-on-rails - 设计无法完成 session Controller 功能的管理模型

ruby-on-rails - 部署后设计丢失 session

ruby-on-rails-3 - 用户注册时如何向用户添加 UserProfile? (设计,Rails 3)

ruby-on-rails - 从 Rails 的任何地方访问 "session key"cookie 名称

ruby-on-rails - 如何在 Factory Girl 中创建 has_and_belongs_to_many 关联