最初のアプリ認証を2番目のアプリで使用できると思います。コントローラーへのリダイレクトを使用してfacebookやtwitterのようにリンクを作成すると、このコントローラーが最初のアプリにリクエストを送信します(これを行うにはセキュリティコードが必要です) )そして応答を取得し、必要なデータ(user_idまたはアカウント)を保存して、うまく機能します...
protect_from_forgeryを使用する API クラス:
class ApiController < ApplicationController
protect_from_forgery :except => 'custom_login'
end
これを行うと、デフォルトのレール保護を回避できます。
<%= hidden_field_tag :authenticity_token, form_authenticity_token -%>
レールフォームで一般的に使用されます。次に、秘密のハッシュ コードを実装し、次のように検証します。
class ApiController < ApplicationController
protect_from_forgery :except => :login_from_app2
def login_from_app2
if params[:authentication] == auth_hash
if login(params[:user_credentials])
render :text => "Success" #better you return a json
else
render :text => "Fail login" #better you return a json
end
else
render :text => 'Invalid security hash'
end
end
def auth_hash
"8f2e4b354f193744272fe246ca9e8bf5"
end
end
そうすれば、app2 のみを含むコードが app1 にアクセスするための「post」リクエストで送信され、ログインを制御できます。
これが100%安全かどうかはわかりませんが、そうだと思いますが、この場合、これが良いアプローチではない理由を誰かが説明できればうれしいです.