6

我有一個博客子域可以很好地運行,但是,簽名與所有子域都是分離的,因此,如果用戶登錄他的cookie,只能在非子域頁面上有效。我如何設置我的應用程序使Cookie在所有子域和普通頁面中都有效?通過子域共享一個cookie

我通過這個主題:Share session (cookies) between subdomains in Rails?,但不幸的是沒有成功。我甚至嘗試了一步一步的機架中間件方法,但沒有成功。

我正在使用Rails 3.2.13。

任何幫助表示讚賞! :)

+0

通過域名應該工作...你確定你測試正確嗎? – aguynamedloren

+0

你能詳細說明一下嗎?我對cookies沒有太多經驗。看,用戶登錄時發生這種情況:cookies [:remember_token] = user.remember_token。一個標準的標準cookie。我怎樣才能使這個cookie與所有子域一起工作呢? –

+1

您是否試過':cookie_store,:key =>'_your_app_session',:domain =>「.yourdomain.com」'? –

回答

16

我所需要做的就是在創建cookie時指定域,如前面所述。

cookies[:remember_token] = { value: user.remember_token, domain: ".lvh.me" } 
1

domain: all在該行的末尾在你的配置/ session_store.rb

如。

YourApp::Application.config.session_store :encrypted_cookie_store, key: '_yourapp_session', domain: :all 

您可能還需要在你的config /環境/ production.rb

config.action_dispatch.tld_length = 2 

更改此參數。如果您的域名是example.com那麼你tld_length(頂級域名長度)爲1(這是默認)。 example.com.au是2,127.0.0.1.xip.io是5,依此類推。