1

目前,我的 rake 路由输出中有这两条路由:

user_omniauth_authorize
/users/auth/:provider(.:format)
devise/omniauth_callbacks#passthru {:provider=>/facebook|twitter/}
user_omniauth_callback
/users/auth/:action/callback(.:format)
devise/omniauth_callbacks#(?-mix:facebook|twitter)

我必须更改什么文件才能自定义这些文件,以便路线可以读取:

user_omniauth_authorize
/admin/manage/:slug/auth/:provider(.:format)
devise/omniauth_callbacks#passthru {:provider=>/facebook|twitter/}
user_omniauth_callback
/admin/manage/:slug/auth/:action/callback(.:format)
devise/omniauth_callbacks#(?-mix:facebook|twitter)
4

1 回答 1

2

将以下内容添加到您的 routes.rb 文件中:

devise_for :users, :skip => :omniauth_callbacks

devise_scope :user do
    match "/admin/manage/:slug/auth/:provider",
      :constraints => { :provider => /facebook|twitter/ },
      :to => "devise/omniauth_callbacks#passthru",
      :as => :user_omniauth_authorize,
      :via => [:get, :post]

    match "/admin/manage/:slug/auth/:action/callback",
      :constraints => { :action => /facebook|twitter/ },
      :to => "devise/omniauth_callbacks",
      :as => :user_omniauth_callback,
      :via => [:get, :post]
end

现在,这是未经测试的。我从Devise 的源代码中复制了它。所以有几个问题:

  1. 您必须添加user:as别名,因此它不是动态的。
  2. 您必须将身份验证提供程序添加到约束中,因此它不是动态的。
于 2013-04-29T19:26:41.697 回答