0

私は現在、Rails Spree アプリケーション (v 1.3.x) に取り組んでいます。

数か月前に作成した別のアプリケーションもありますが、myfirstapp.comが稼働しており、非常に多くのユーザーがこのアプリケーションでアカウントを作成しているため、現在は登録ユーザーになっています。

したがって、現在取り組んでいる新しいアプリケーションで、登録ユーザー (つまり、myfirstapp.com でアカウントを作成したユーザー) を使用せずに 2 番目のアプリにサインインできるようにするのが **mysecondapp.com であると仮定します。私の2番目のアプリサインアッププロセス。彼らは myfirstapp.com から認証され、私の secondapp に入る必要があります。**

これを達成する方法はありますか?

4

1 に答える 1

0

最初のアプリ認証を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%安全かどうかはわかりませんが、そうだと思いますが、この場合、これが良いアプローチではない理由を誰かが説明できればうれしいです.

于 2013-05-22T14:31:50.047 に答える