小编Wil*_*ill的帖子

使用多租户 Rails 5 应用程序设计 OmniAuth

情况是这样的。我有一个使用 Apartment gem 的多租户 Rails 应用程序,我需要在其中实施 LinkedIn OmniAuth 策略。

正如您从我的路由中看到的,Devise 用户和关联的路由仅保留在子域的各个架构上。

路线示例:

好的:https://frank.example.io/users/sign_in

坏的:https://example.io/users/sign_in

路线

class SubdomainPresent
  def self.matches?(request)
    request.subdomain.present?
  end
end

class SubdomainBlank
  def self.matches?(request)
    request.subdomain.blank?
  end
end

Rails.application.routes.draw do
  constraints(SubdomainPresent) do

    ...

    devise_for :users, controllers: { 
      omniauth_callbacks: 'omniauth_callbacks'
    }
    devise_scope :user do
      get '/users/:id', to: 'users/registrations#show', as: "show_user"
    end

    ...

  end
end
Run Code Online (Sandbox Code Playgroud)

我的具体问题是 LinkedIn 不支持通配符及其回调 URL,因此我不知道如何在 OAuth 身份验证后将用户定向到正确的域。

ruby-on-rails multi-tenant devise omniauth apartment-gem

3
推荐指数
1
解决办法
1378
查看次数