我有应用,并且已连接有效的管理员。我试图让管理员用户通过主动管理员使用devises的sign_in @user
方法无密码登录任何用户。是否有可能实现这一目标?
我可以使用params / session中的用户名进行重定向,但这不安全,好像我不想在活动管理员之外传递任何内容。
有什么想法吗?
答案 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