2012-09-01 85 views
0

我正在嘗試向本地運行的Rails應用程序發出一個簡單的$ .ajax請求。來自Safari擴展的Rails Devise 401

該請求在控制檯沒有任何問題的情況下工作,但是當我從safari擴展中調用該應用時,該應用返回401 Unauthorized。我不確定是否需要爲每個用戶創建一個api標記,並將其傳遞給url字符串以進行身份​​驗證,或者如果有簡單的理由說明爲什麼即使我登錄,設計仍未處理請求。我的猜測是罪魁禍首是前過濾器我有我的控制器上,看起來像這樣:

before_filter: authenticate_user! 

但同樣,我是說我在給我的應用程序簽署的401。僅供參考,這裏是我從分機撥打電話:

$.ajax({                                                   
       type: 'GET',                                                 
       url: 'http://localhost:3000/playlists.json?callback=?,                                    
       dataType: 'jsonp',                                                 
       success: function(data) { console.log(data); },                                              
       error: function() { console.log('Uh Oh!'); }, 
       jsonp: 'jsonp', 
       crossdomain: true                                    
      }); 

任何幫助將非常感激。

回答

0

好吧,算了一下。被設置的cookie被設置爲在'會話'後過期,這基本上意味着只要您離開頁面,會話就不再存在。因此,擴展程序無法訪問此擴展cookie。關鍵是默認的會話cookie,你可以在配置/初始化/ session_store.rb做這樣的設定截止日期:

YourApp::Application.config.session_store :cookie_store, { 
   :key => '_yourapp_session', 
   :expire_after => 60*24*60*60 
} 

你可以閱讀更多有關Cookie類型在這裏:http://en.wikipedia.org/wiki/HTTP_cookie#Session_cookie