ここに状況があります。私はLinkedIn OmniAuth戦略を実装する必要があるアパートの宝石を使ってマルチテナントレールアプリを持っています。Multi-tenant Rails 5 Appを使用したDevise 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
私の特定の問題は、LinkedInのは、自分のコールバックでワイルドカードをサポートしていないということですU RLsので、OAuth認証後にユーザーを適切なドメインに誘導する方法が失われています。
ユーザーを特定のユーザーページにリダイレクトするコントローラアクションを追加する必要があります。私はLinkedIn APIが何らかの 'user_id'を返すと思いますか?ここから始める必要があります。 – CottonEyeJoe
残念ながら、不可能かもしれないスキーマが原因です。スキーマ「A」と「B」を持っていれば、それぞれが 'user.id == 1'を持つユーザを持つことができます。 – Will