2

現在、私は2つのサーバーをセットアップしており、それぞれが独自のものを処理していますが、それらの間で統一されたログインが必要です。現在、あるポータルのログイン フォームは、ユーザー名/パスを API 経由で Rails ポータルに送信するだけで、認証トークンが返されます。これをセッションに保存し、今後の認証と API 呼び出しに使用します。

Ruby API は私たちのサイトと通信せず、Ruby 側は API が ping されたときにセッションで何もせず、私たちに送り返すため、サイトにアクセスするユーザーは各ポータルで 1 回ログインする必要があるという問題があります。そして認証トークン。

私の最初のアイデアは、資格情報を API に送信するときに Rails 側でセッションを作成することでしたが、ユーザーのブラウザーでセッション ID を設定できないため、明らかに機能しません。私が言われた。

Ruby 側がセッション ストレージにデータベースを使用するように移行した場合、この問題は緩和されますか? 基本的には、Ruby 側の変更のほとんどを保持したいと考えています。

4

2 に答える 2

0

少し違うルートをたどることになりました。基本的に、それぞれの側がデータベースで認証トークンを探し、各リンクのクエリ文字列を介して相互に渡します。たとえば、ユーザーが PHP 側でログインすると、Ruby 側は API を介してユーザー名とパスワードを受け取り、認証トークンを作成してデータベースを更新し、トークンを返します。次に、PHP 側はそのトークンをセッションに保存し、クエリ文字列 (?authToken=blahblah) を介して Ruby 側に送り返します。Ruby 側は常にトークンをリッスンしています。認証トークンが見つかった場合は、データベースをチェックして一致するものがあることを確認し、一致する場合、ユーザーは Rails セッションで認証されます。

逆に、Ruby 側のログイン フォームは、データベース内の認証トークンを更新するだけで、PHP 側を指すリンクも認証トークンを渡します。その側は同じチェックを行い、一致した場合に認証します。

于 2013-05-10T13:47:06.060 に答える