从活动管理员登录主应用程序

时间:2013-07-17 13:56:52

标签: ruby-on-rails ruby devise activeadmin

我有应用,并且已连接有效的管理员。我试图让管理员用户通过主动管理员使用devises的sign_in @user方法无密码登录任何用户。是否有可能实现这一目标?

我可以使用params / session中的用户名进行重定向,但这不安全,好像我不想在活动管理员之外传递任何内容。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我不确定你的意思是“不安全”;设计内部可以确保您是管理员用户等,并且您需要传递的所有内容都是新用户的用户名。也就是说,下面的代码完全在ActiveAdmin中,可以达到你想要的效果。

N.B。我想不出一个简单的方法来重新签署管理员用户(我为所有用户使用相同的Devise并使用基于角色的身份验证)。

member_action :sign_in_as, :method => :put do
  user = User.find(params[:id])
  sign_in user, bypass: true
  redirect_to root_path
end

action_item :only => :show do
  link_to('Sign in As', sign_in_as_admin_user_path(user), method: 'put')
end

答案 1 :(得分:0)

你可以通过使用其他方法来首先验证管理员这样做,

def authenticate_any!
  if authenticate_admin_user!
    true
  else
    authenticate_user!
  end
end

或重写设计

module Devise
 module Controllers
  module Helpers
   def authenticate_user!
    if authenticate_admin_user!
      return true
    end
    super
   end
  end
 end
end