2012-05-21 3 views
0

소개 : 자동 생일 축하해달라고하는 페이스 북 앱을 만들고 있습니다. 나는 그것을 레일에 구축하고 fb_graph이라는 루비 API 래퍼를 사용하고있다. fb_graph의 작성자가 잘 작동하는 샘플 애플리케이션을 제공했습니다. fb_graph_sample이 레일 프로젝트에서 웹 세션은 어떻게 작동합니까?

세션과 쿠키가 어떻게 작동하는지 이해할 수 없습니다. 예를 들어 다음 코드를 확인하십시오.

def require_authentication 
    authenticate Facebook.find_by_id(session[:current_user]) 
rescue Unauthorized => e 
    redirect_to root_url and return false 
end 

def authenticate(user) 
    raise Unauthorized unless user 
    session[:current_user] = user.id 
end 

[[current_user]] 세션의 출처는 어디입니까?

설정/초기화/session_store.rb에서

,

FbGraphSample::Application.config.session_store :cookie_store, :key => '_fb_graph_sample_session' 

그래서, 내가 값, 도메인 _fb_graph_sample_session을보고, 나는 크롬 관리자 도구를 사용하여로 배포하고있는 곳입니다 로컬 호스트의 쿠키를보고 경로, 만료, 크기, http 등 ...

어떻게 세션 [: current_user]가 발생하는지 아직 알 수 없습니까? development.sqlite3 파일을 보면 페이스 북 모델에 대한 데이터가 하나뿐입니다. ID가 1이면, [: current_user]가 1이고 코드가 'authenticate Facebook.find_by_id (1)'라고 믿을 수 있습니다.

[[current_user]] 세션이 어떻게 1로 변환되는지 설명해주십시오. 로그인시 railstutorial.org 장을 읽고 세션 컨트롤러를 만들지 만 fb_graph_sample 앱에는 세션 컨트롤러가 없습니다.

감사합니다,

답변

0

난을 인증 방법에 설정되어 얻을 :

session[:current_user] = user.id 

쿠키에 사용자가 로그인 (특별 해시으로 생각) 쿠키 기반 세션 저장소를 사용하는 응용 프로그램, 그의 브라우저에 기록됩니다. 세션을 해시로 사용하면 위와 같이 설정하거나 가져올 수 있습니다. 즉

<%= "logged in as #{User.find(session[:current_user]).name}" %>