我的問題稍微複雜一些,然後標題假設。如何將兩個Rails應用程序的身份驗證耦合起來
我有兩個Rails4應用程序。兩者都通過mongoid訪問相同的mongodb。兩者都使用devise 3.0.0進行身份驗證,兩者都具有相同的用戶模型,它啓用了設計並使用相同的集合。
api.myapp.com
第二應用提供從
myapp.com
此外,相關網站,我從交付JS singlepage應用:
第一應用在域只能提供一個API
app.myapp.com
後者可以無障礙地訪問API,並使用自制的托克n身份驗證補丁,以便令牌可以作爲HTTP頭傳輸。
兩個軌道的應用程序都在同一個內容:
config/initializers/devise.rb
config/initializers/secret_token
config/initializers/session_store
後者看起來像:
Web::Application.config.session_store :cookie_store, key: '_myapp_session', domain: :all
這就是我現在做我的骨幹基於單頁的應用程序:
- 我登錄應用程序
- 該應用程序獲取auth_t奧肯從API
- 使用令牌
- 的響應頭設置cookie
由於Cookie設置,我的應用程序商店令牌
所以僞造的API的問題,我做到以下幾點:
- 我在Chrome啓動一個REST客戶
- 我登錄到API使用該客戶端,並獲得令牌
- 我要求一個額外的資源使用客戶端和令牌
- 的響應頭設置一個cookie
- 現在我進入我的Rails的網站,並...瞧我登錄
我對這種行爲感到困惑。當請求資源並且用戶登錄時,API似乎提供了正確的cookie。否則,在使用REST客戶端之後,我不會登錄到我的網站。
但是,如果我的單頁應用程序與REST客戶端完全相同,並且收到了設置cookie的響應標頭,我沒有登錄到我的網站。
有沒有人有提示?
問候 菲利克斯
這是一個很好的提示。但是上面提到的session_store配置已經將域設置爲'.myapp.com',它應該匹配所有子域。由於所有三個應用程序都是從域內的子域提供的,因此它應該可以工作。同時,我手動手工創建了xhr請求,在api中登錄了一個用戶,請求了一個資源,爲.myapp.com獲取了一個cookie,但沒有登錄到該web應用程序。走出這裏的選擇。 – GeorgieF