2013-09-29 31 views
0

我需要將「Session」類型的cookie更改爲「Persistent」類型。此外,我需要與「omniauth-facebook」一起工作。在下面的例子中,一切運行良好,但是當我使用omniauth時,根本沒有設置cookie。這是測試代碼中,我寫道:爲什麼cookie不能使用Sinatra和Omniauth?

 
require 'rubygems' 
require 'sinatra' 
require 'encrypted_cookie' 
require 'omniauth-facebook' 
use Rack::Session::EncryptedCookie, :secret => "fdstopitot9dasdsdasjm4kmt0èu54cmjff83d2'ìel.4j9c" 
use OmniAuth::Builder do 
    provider :facebook, '290594154312564','a26bcf9d7e254db82566f31c9d72c94e' 
end 
get "/" do 
    "persistent | session | /auth/facebook" 
end 
get "/persistent" do 
    response.set_cookie 'test', {:value=> "persistent", :max_age => 2592000.to_s} 
    redirect "/" 
end 
get "/session" do 
    response.set_cookie 'test', {:value=> "session"} 
    redirect "/" 
end 
get '/auth/:provider/callback' do 
    response.set_cookie 'test', {:value=> "facebook_callback"} 
    redirect "/" 
end 

點擊/session/persistent可以看到餅乾相應地改變(在Chrome中,您可以檢查與F12>資源>餅乾>本地主機餅乾)。

而不是點擊/auth/facebook cookie根本沒有設置。

響應標頭似乎沒問題(在Chrome中,您可以看到http響應標頭,F12> Network>標頭)。我只用Chrome進行測試。

 
HTTP/1.1 302 Moved Temporarily 
X-Frame-Options: SAMEORIGIN 
Location: http://localhost:4567/ 
X-XSS-Protection: 1; mode=block 
Content-Type: text/html;charset=utf-8 
Content-Length: 0 
Set-Cookie: test=facebook_callback 
Set-Cookie: rack.session=X8U8kupLYzIurjMS4pSCQfF%2BzPpjQhJMqyMd84o8BQdQLwmhagL1UkZ4oi7%2F%0A9bEN%2B0FZDDUAeQD%2BRizczwvepQi%2FbcMwaAjpkFcXhiWuJPQ%3D%0A; path=/ 
X-Content-Type-Options: nosniff 
Connection: keep-alive 
Server: thin 1.5.1 codename Straight Razor 

任何線索?

+0

是是一個很重要的問題,只需添加路徑到cookie: response.set_cookie '測試',{:價值=> 「facebook_callback」:路徑=> 「/」} 我應該刪除的問題? – Lucamug

+0

你可以發表你的答案並接受它;其他人可能會發現它在未來有用。 –

回答

0

是是一個很重要的問題,只需添加路徑到cookie:response.set_cookie '測試',{:價值=> 「facebook_callback」:路徑=> 「/」}

我之所以沒有注意到有一個重定向到「/」,所以Chrome只顯示路徑「/」的cookies。除去重定向,我注意到我有兩個名爲「test」的cookie。一個帶有「/」路徑,另一個帶有「/ auth」路徑。

相關問題