2014-09-02 68 views
1

我正在創建一個Rails應用程序,它使用Devise進行用戶身份驗證,並將Backbone Marionette作爲前端。我無法確定如何訪問在後端創建的會話。我希望能夠說出用戶名/電子郵件,以將其顯示在我的Marionette應用程序中。Backbone Marionette訪問設計會話?

此外,檢查會話是否存在可能很有用,儘管在大多數情況下,控制器中的設計認證似乎工作得很好。

任何想法如何我可以訪問在骨幹目前的設計會議?

在此先感謝!

回答

1

導軌3

的會話cookie被存儲爲_app_session。他們看起來很模糊,但他們只是base64編碼。您可以使用客戶端上的atob函數解碼會話cookie並讀取您放入其中的任何信息。 (在Rails 4,你可能正在使用加密的會話cookie,你需要做的東西有點不同)

一個例子餅乾可能看起來是這樣的:

"BAh7CEkiD3Nlc3Npb25faWQGOgZFVEkiJWNlZjFjMDhiNjYyNWEzZDI5YWM5MTJlMDY3MmQ0NTM4BjsAVEkiGXdhcmRlbi51c2VyLnVzZXIua2V5BjsAVFsISSIJVXNlcgY7AEZbBmkHSSIiJDJhJDEwJE5MYlhOWHFUMEtoZmdnNFliZHdyeE8GOwBUSSIQX2NzcmZfdG9rZW4GOwBGSSIxSSt6TnJsZm1FOTZTNWFRWGdSVWtGK2Zmd3BPVUxkQURjWHBqZ2NoZ05nMD0GOwBG" 

這將解碼弄成這個樣子:

atob(cookieStr); 

"{I"session_id:ETI"%cef1c08b6625a3d29ac912e0672d4538;�TI"warden.user.user.key;�T[I" User;�F[iI""$2a$10$NLbXNXqT0Khfgg4YbdwrxO;�TI"_csrf_token;�FI"1I+zNrlfmE96S5aQXgRUkF+ffwpOULdADcXpjgchgNg0=;�F" 

Rails的3/4

而不是從會話cookie我讀會添加一個單獨的cookie或只是用您想要的數據引導您的HTML代碼。

設定自己的Cookie在你的控制器或設計掛鉤:

cookies[:my_data] = { 
    value: { username: "rocketman", email: "[email protected]" }.to_json, 
    domain: "my.sweetapp.com" 
} 

在您的客戶端讀取該cookie:(使用一個lib像$.cookie簡化讀)

var cookieData, cookies = document.cookie.split('; '); 
for (var i = 0, parts; (parts = cookies[i] && cookies[i].split('=')); i++) { 
    if (decode(parts.shift()) === "my_data") { 
    cookieData = JSON.parse(decode(parts.join('='))); 
    } 
} 
// Do something with cookieData; 
+0

是啊,我m搖動一些Rails 4.對此有什麼建議? :) – 2014-09-02 21:40:58

+0

很酷。添加了我會在Rails 4中做的事。 – 2014-09-03 17:03:12

+0

非常感謝!這真的很有幫助 – 2014-09-03 22:25:00