Facebook omniauth 登录上的多个 Rails 应用路由问题

Trouble with Multiple Rails app routing on Facebook omniauth login

我目前正在维护一个 Rails 项目,该项目需要将其 Passenger Rack Middleware 转换为 Unicorn。我遇到了一个问题,即 Unicorn 似乎不太支持子域,因此我有如下解决方法。

require_relative '../lib/route_scoper'

MyProject::Application.routes.draw do
  scope RouteScoper.root do
    get "pages/welcome"

    mount RailsAdmin::Engine => '/admin', as: 'rails_admin'

    devise_for :users, controllers: { omniauth_callbacks: "omniauth_callbacks" }

    root to: "pages#welcome"

    resources :categories, only: [:index, :show]
    resources :counties, only: [:index], defaults: { format: :json }
    resources :products, only: [:show] do
      resources :votes, only: [:create]
    end

    resources :tickets, only: [:new, :create]
  end
end

我已经根据这里的文章做了一个解决方法

Multiple Rails 4 app using nginx + unicorn

一切正常,除了我们的 Facebook 登录似乎有路由问题。

Started GET "/my_project"
Processing by Devise::CasSessionsController#service as HTML
Redirected to http://events.staging.mainsite/users/auth/facebook
Filter chain halted as :sync_fb_user rendered or redirected
Completed 302 Found in 49.8ms (ActiveRecord: 0.0ms)

Rails项目在一个域名下 http://events.staging.mainsite/my_project

它总是将我重定向到 http://events.staging.mainsite/users/auth/facebook 页面并显示错误消息 404 未找到。

它用于在 URL 处进行路由,如以下旧版本

Redirected to /my_project/users/auth/facebook

不确定我是否可以覆盖 omniauth 路径来解决这个问题,或者只是修改 route.rb 以指向正确的登录路径,感谢您的帮助。

好吧,我刚刚弄明白了,我必须为我的设计添加一个路径 然后将它移到 RouteScoper 之外。

devise_for :users, controllers: { omniauth_callbacks: "omniauth_callbacks" }, path: "#{RouteScoper.root}/users"