2014-09-02 2 views
1

사용자 인증을 위해 Devise를 사용하고 프론트 엔드로 백본 Marionette를 사용하는 레일즈 앱을 만들고 있습니다. 나는 백엔드에서 생성 된 세션에 액세스하는 방법을 알아내는 데 어려움을 겪고 있습니다. 내 마리오네트 앱에 표시 할 사용자 이름/이메일을 말하고 싶습니다.백본 마리오 네트에서 액세스 교섭 세션?

또한 컨트롤러에있는 대부분의 장치 인증이 상당히 잘 작동하고있는 것처럼 보이지만 세션이 있는지 확인하는 것이 유용 할 수 있습니다.

어떻게 현재 백엔드 세션에서 액세스 할 수 있습니까?

미리 감사드립니다.

답변

1

레일 3

는 세션 쿠키는 _app_session로 저장됩니다. 그들은 난처하게 보입니다 만 그들은 base64로 인코딩되어 있습니다. 클라이언트의 atob 함수를 사용하여 세션 쿠키를 디코딩하고 여기에 입력 한 정보를 읽을 수 있습니다. (레일 4에서 당신은 아마 암호화 된 세션 쿠키를 사용하고는 조금 다른 뭔가를 할 필요가있을 것이다)

는 예 쿠키 같은 것을 보일 수 있습니다 :이 같은 무언가로 디코딩 할

"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" 

레일 3/4

세션 쿠키 I 읽기보다는 별도의 쿠키를 추가하거나 HTML 코드를 원하는 데이터로 부트 스트랩합니다.

가 컨트롤러에 자신의 쿠키를 설정하거나 고안 후크 :

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

참 나 '(읽기를 단순화하기 위해 $.cookie 같은 lib 디렉토리를 사용) : 클라이언트에서

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

는 쿠키를 읽어 보시기 바랍니다 일부 레일 4를 흔들어서. :) –

+0

쿨. Rails 4에서 내가 할 일을 추가했습니다. –

+0

고마워요! 이것은 정말로 도움이된다. –