18

私はかなり長い間これに苦労してきましたが、解決策を見つけることができませんでした。1 回のログインで複数のトップ レベル ドメインを表示できるユーザーが必要です。

私の理解では、これを設定してenvironment.rbで呼び出す必要がありbefore_dispatchます。これは私が思いついたものです:

require 'activesupport'
require 'dispatcher'
module ActionController
   class Dispatcher

      def set_session_domain
         ActionController::Base.session_options.update :session_domain => "#{@request.host}"
      end 

      before_dispatch :set_session_domain
   end
end

ただし、から値を取得しようとすると、これは機能していないようですsession[:session_domain]

どんな助けでも大歓迎です。

4

5 に答える 5

8

これは少しトリッキーです。Cookie は現在のドメイン ("forms.example.com" など) と親ドメイン (".example.com"、".com" は不可) にのみ割り当て (および取得) できるため、他のドメインには割り当てられません。 (「othersite.com」)、別の解決策を見つける必要があります。これは Rails とは何の関係もありませんが、Cookie の仕組みとは関係ありません。

編集: セッションは、Cookie に格納されたクライアント固有のハンドルに依存しているため、セッションもクロスドメインで機能しません。

このサイトには、クロスドメイン Cookie を作成するための解決策が 1 つあります。これは、セキュリティに影響を与える可能性がありますが、私が知る中で最もクリーンな方法です。より複雑なバージョンでは、サーバーが何らかの安全なチャネルを介して直接通信します。

より汎用的なシングル ログイン サービスを探している場合は、何らかの形式のOpenIDを実装してみてください。

于 2008-12-18T14:51:12.023 に答える
2

Rails 2.3 のサブドメインの場合

ActionController::Base.session = { :domain => ".mydomain.com" }

トップレベル ドメインの場合は、このミドルウェアを試してください。

現在、上記のミドルウェアで遊んでいますが、期待どおりに動作しません。ミドルウェアを使用する場合は、サブドメインも処理するため、上記のコードは必要ありません。

于 2010-05-23T12:19:21.980 に答える
1

ドメインがトップレベルであるかサブドメインであるかに関係なく、ドメイン間で認証が必要な場合は、おそらくRubyCASのようなものが必要になります。

于 2008-12-23T17:37:19.747 に答える
0

Keltia と zuk の両方が正しいです。答えは ruby​​CAS です。私たちはその統合を行っており、それが可能です

SSI - シングル サインイン - 一方のサイトにサインインすると、もう一方のサイトにも自動的にサインインされます

SSO - シングル サインアウト 1 つのサイトからサインアウトすると、自動的にもう一方のサイトからサインアウトします

私たちにとって、これは実証済みのソリューションであり、実装が難しいものではありません

http://www.cabslk.comと www.ticketslk.comで使用してい ます。

乾杯、サメーラ

于 2009-11-30T20:07:13.243 に答える