设计omniauth重定向到根URL,我无法改变它

时间:2014-10-06 17:36:20

标签: ruby-on-rails devise omniauth

当我登录或注册Facebook时,我被重定向到我的根网址。 在我的omniauthcallbacks控制器中,这是我认为正在发生的地方:

def facebook
  @user = Artist.from_omniauth(request.env["omniauth.auth"])

  if @user.persisted?
    sign_in_and_redirect :artist, @user, :event => :authentication #this will throw if @user is not activated
    set_flash_message(:notice, :success, :kind => "Facebook") if is_navigational_format?
  else
    session["devise.facebook_data"] = request.env["omniauth.auth"]
    redirect_to new_user_registration_url
  end
end

我需要做些什么才能将其重定向到另一条路线?

1 个答案:

答案 0 :(得分:0)

请参阅https://github.com/plataformatec/devise/wiki/How-To:-Redirect-back-to-current-page-after-sign-in,-sign-out,-sign-up,-update

在应用程序控制器中,您可以定义以下方法:

  • after_sign_up_path_for
  • after_sign_in_path_for
  • after_sign_out_path_for

并将用户发送到任何您想要的地方。在我的应用程序中,我有Users和AdminUsers,这就是我的方法:

  def after_sign_in_path_for(resource)
    case resource
    when AdminUser
      admin_root_path
    else
      session.delete(:after_sign_iou_url) || root_path
    end
  end

会话变量在别处设置。