无法为 devise 创建两个 CustomFailure 重定向行为,一个用于用户,另一个用于 admin_user

发布于 2025-01-05 23:17:39 字数 500 浏览 1 评论 0原文

我在我的 Rails 应用程序中使用 active_admin 。以前,我曾经在设备登录失败时渲染自定义页面。现在的问题是,如果 active_admin 登录也失败,则会呈现相同的自定义页面。

我被这个问题困扰,并且在我的开发过程中已经走得太远,无法放弃 active_admin。请帮忙。

我的 CustomFailure 定义在这里:

class CustomFailure < Devise::FailureApp
  def redirect_url 
    signin_path
  end

  def respond
    if http_auth? 
      http_auth
    else
      redirect
    end
  end
end

有人可以告诉我如何修改代码以使用户登录失败和 admin_user 登录失败的重定向路径。我的管理员用户登录路径是:admin_user_session_path

I am using active_admin in my rails app. Previously, I used to render a custom page on devise login failed. The problem now is that the same custom page gets rendered if active_admin login fails too.

I am stuck with this problem and too far along my development to give up active_admin. Please help.

My CustomFailure definition is here :

class CustomFailure < Devise::FailureApp
  def redirect_url 
    signin_path
  end

  def respond
    if http_auth? 
      http_auth
    else
      redirect
    end
  end
end

Could someone tell me how to modify the code to have redirect paths for user signin failed and admin_user signin failed. My admin user signin path is : admin_user_session_path

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

因为看清所以看轻 2025-01-12 23:17:39

你必须使用作用域来解决这个问题:-

class CustomFailure < Devise::FailureApp 
  def redirect_url 
    if warden_options[:scope] == :user 
      signin_path 
    else 
      new_admin_user_session_path 
    end 
  end 
  def respond 
    if http_auth? 
      http_auth 
    else 
      redirect 
    end 
  end 
end 

希望这会有所帮助:)

You have to use scope to solve this :-

class CustomFailure < Devise::FailureApp 
  def redirect_url 
    if warden_options[:scope] == :user 
      signin_path 
    else 
      new_admin_user_session_path 
    end 
  end 
  def respond 
    if http_auth? 
      http_auth 
    else 
      redirect 
    end 
  end 
end 

hope this helps :)

痞味浪人 2025-01-12 23:17:39

application_controller.rb

...
def after_sign_in_path_for(resource_or_scope)
  if admin_user
   redirect_to whatever_path
  else
   root_path
  end
end
...

我可能不知道管理员用户的正确调用,但这应该可行。

application_controller.rb

...
def after_sign_in_path_for(resource_or_scope)
  if admin_user
   redirect_to whatever_path
  else
   root_path
  end
end
...

I may not know the correct call for the admin user but this should work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文