Railsを使用して複数のドメインでユーザーセッションを共有するにはどうすればよいですか?
-
07-07-2019 - |
質問
ユーザーが1つのドメインでWebサイトにサインインし、同じセッションで他のパートナードメインへのアクセスを自動的に許可する宝石、チュートリアル、またはソリューションを知っている人はいますか?
2つのRailsアプリを実行しています。App-AとApp-Bと呼びましょう。 App-Aにはデータベースが関連付けられており、App-A.comでの登録とログインが可能です。 App-A.comアカウントを持つすべてのユーザーにApp-B.comへのアクセスを許可したいのですが、App-B.comに個別に再登録したり、手動でログインしたりする必要はありません。
助けてくれてありがとう! -マーク
解決
両方のアプリで同じsession_keyを設定できます。 appA environment.rbで、このようにsession_keyを変更します
Rails::Initializer.run do |config|
...
config.action_controller.session = {
:session_key => '_portal_session',
:secret => '72bf006c18d459acf51836d2aea01e0afd0388f860fe4b07a9a57dedd25c631749ba9b65083a85af38bd539cc810e81f559e76d6426c5e77b6064f42e14f7415'
}
...
end
AppBでも同じことを行います。 (同じ秘密を使用することを忘れないでください)
セッションを共有しました。 restfull_authenticationを使用して、 user_id というセッション変数を設定するとします。 appAで認証すると、セッションでuser_idが設定されます。これで、appBでは、user_idがセッションに存在するかどうかを確認するだけです。
これは全体的なスキーマです。このアイデアを使用してさらに詳しく説明できます。
他のヒント
アプリケーションのシングルサインオンソリューションを作成する場合は、 RubyCAS ソリューション。また、他のRails以外のアプリケーションにシングルサインオンを提供するために使用でき、LDAPまたは他の認証プロバイダーと認証を統合できます。
所属していません StackOverflow