현재 레일즈에 웹 애플리케이션을 구축 중입니다. Authlogic을 사용하여 정상적인 인증을 처리하고 있습니다. 나는 facebooker를 사용하여 외부 사이트에서 facebook 연결을 처리하고 facebook canvas 응용 프로그램 내에서 사용자를 인증합니다.레일즈 - Authlogic 및 Facebook App - Coherent Current_User
간단하고 일관된 current_user 기능을 만드는 데 문제가 있습니다. 현재 나는 여러 가지 방법으로 현재 사용자를 얻거나 설정하는 데 혼란을 겪고 있습니다. 가능한 한이 작업을 단순화하고 싶습니다.
class ApplicationController < ActionController::Base
helper :all # include all helpers, all the time
protect_from_forgery # See ActionController::RequestForgeryProtection for details
filter_parameter_logging :fb_sig_friends, :password, :password_confirmation
helper_method :facebook_session, :current_user_session, :current_user
before_filter :fb_setup
attr_accessor :current_user
helper_attr :current_user
#Before filter to decide if we should use facebook sessions to set current user
def fb_setup
if request_comes_from_facebook?
ensure_authenticated_to_facebook
set_current_fb_user
end
end
############
# AuthLogic
############
def current_user_session
return @current_user_session if defined?(@current_user_session)
@current_user_session = UserSession.find
end
def current_user
return @current_user if defined?(@current_user)
@current_user = current_user_session && current_user_session.user
end
##########
# Facebook
##########
def create_user
self.current_user = User.for(facebook_session.user.to_i, facebook_session)
end
def set_current_fb_user
self.current_user = User.for(facebook_session.user.to_i, facebook_session)
end
end
그리고 내 사용자 모델에서
, 내가 찾는 데 도움이 방법이/사용자를 생성 : 나는 여기 (environment.rb에 정의) 내 세션에 대한 active_record_store 을 사용하고내 응용 프로그램 컨트롤러입니다 페이스 북에서 ID : def self.for (facebook_id, facebook_session = nil) 돌아 오는 find_or_create_by_facebook_id (facebook_id) do 사용자 | facebook_session.nil? user.store_session (facebook_session.session_key) 끝 끝 끝이 혼란 무엇
def store_session(session_key)
if self.session_key != session_key
update_attribute(:session_key,session_key)
end
end
def facebook_session
@facebook_session ||=
returning Facebooker::Session.create do |session|
session.secure_with!(session_key,facebook_id,1.day.from_now)
end
end
는 그 authlogic의 방법에만 CURRENT_USER이 필요할 때 호출되는,하지만 페이스 북의 set_current_fb_user는 모든 요청하기 전에 호출된다.
current_user 설정을 담당하는 세션에 상관없이 일관된 방식으로 application_controller에 설정된 self.current_user 또는 @current_user가 필요합니다. 이 작업을 수행하는 데 문제가 있으며 나머지 코드베이스는이 때문에 고통을 겪고 있습니다. 누구든지 조언을한다면, 크게 감사하겠습니다.
추가 정보가 필요하면 알려 주시면 기꺼이 안내해 드리겠습니다.
감사