ruby-on-rails-3 - 使用 Devise+Active Admin+Switch User 登录其他用户的帐户

标签 ruby-on-rails-3 devise activeadmin

我正在尝试实现 switch_user gem 在我现有的 Rails 3.0.9 应用程序中。 我的应用程序上有两个模型,它们是

  1. 用户 - 我的客户帐户,它has_one 帐户
  2. AdminUser - 这是由 ActiveAdmin 创建的

我已经为Users启用了设计身份验证,并且ActiveAdmin也与AdminUser配合得很好。现在,我想从我的事件管理界面中选择帐户并登录到这些帐户,就像帐户所有者一样。切换用户工作正常,但问题是任何人现在只要知道网址就可以简单地登录用户帐户。

http://localhost:3000/switch_user?scope_identifier=user_1

我需要的只是只允许 AdminUser(即,如果有 ActiveAdmin session )访问用户的帐户。

这就是我的/config/initializers/switch_user.rb 的样子

SwitchUser.setup do |config|
  config.controller_guard = lambda { |current_user, request| current_admin_user.nil?}
  config.redirect_path = lambda { |request, params| "/dashboard" }
end

但我收到此错误

NameError in SwitchUserController#set_current_user

undefined local variable or method `current_admin_user' for main:Object

我是否可以访问事件的管理 session ?

/config/initializers/active_admin.rb 代码

ActiveAdmin.setup do |config|
  config.site_title = "MyAppName"
  config.authentication_method = :authenticate_admin_user!
  config.current_user_method = :current_admin_user
end

顺便说一句,在我的应用程序 Controller 中,我没有为 authenticate_admin_user 创建任何方法,current_admin_user 事件管理在没有它们的情况下也可以正常工作。

最佳答案

您需要修改本地config/initializers/switch_user.rb:

config.controller_guard = lambda { |current_user, request, original_user, controller|
    controller.admin_user_signed_in?
}

原始 lambda 有 2 个参数。 只需追加更多(最多 4 个)并使用即可。

不要忘记重新启动 Rails 服务器:)

关于ruby-on-rails-3 - 使用 Devise+Active Admin+Switch User 登录其他用户的帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8706012/

相关文章:

ruby-on-rails - application.rb paths.app.views Rails::Paths::Root 的未定义方法 `app'

ruby-on-rails - 如何在 Rails、Devise 和 Backbone.js 中使用 token 身份验证?

ruby-on-rails-3 - 如何配置 Active admin 支持 mongoid 和 active record?

ruby-on-rails - Active Admin Ruby on Rails仪表板 Controller 错误

ruby-on-rails - 如何在 ActiveAdmin 菜单或标题中添加输入搜索字段

mysql - Rails 迁移 VARCHAR -> VARCHAR BINARY 以区分大小写

ruby-on-rails - 设计 - 自定义用户编辑页面

ruby-on-rails - 将设计登录表单导入 Twitter Bootstrap Modal

ruby-on-rails - 如何轻松地从 json 更新属性

ruby-on-rails - 如何在 rails 4 中编写更新所有条件查询