gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 23:47:38 25 4
gpt4 key购买 nike

我正在尝试实现 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com