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

时间:2012-02-16 19:44:00

标签: ruby-on-rails devise activeadmin

我在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

2 个答案:

答案 0 :(得分:5)

你必须使用范围来解决这个问题: -

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 

希望这有助于:)

答案 1 :(得分:0)

application_controller.rb

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

我可能不知道对admin用户的正确调用,但这应该有用。