2011-02-01 5 views
0

시작 정보 :Rails3, Authlogic 및 authenticates_many current_account_session 도우미 메서드를 코딩하는 방법은 무엇입니까?

  • 내 시스템은 바로 계정을 얻을 수없는 사용자 하위 도메인을!
  • 나는 레일의 3.0.x 버전을 사용
  • 나는 authlogic 2.1.6
  • 모델 계정 및 모델 사용자
  • 쿠키를 사용하는 예를 들어, 이름이 존재 account_1_user_credentials 및 thats right!

모델 Account.rb

class Account < ActiveRecord::Base 
    authenticates_many :user_sessions, :scope_cookies => true 
    has_many :users 
end 

모델 User.rb

class User < ActiveRecord::Base 
    acts_as_authentic do |c| 
    c.validations_scope = :account_id 
    end 
    belongs_to :account 
    ... 
end 

질문 : 어떻게 응용 프로그램 헬퍼 메소드를 코딩 할 수 있습니다?

Authlogic의 문서와 scope_cookies authenticates_many없이 단지 일반적인 구현 보여준다

class ApplicationController 
    helper_method :current_user_session, :current_user 

    private 
    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 
end 

BUT 방법을 수행하는 session_controller.rb (설정 current_account_session)application_controller.rb (데프 current_account_session 구현 .. . 끝)처럼 보이게?

답변

2

모든 사용자가 동일한 로그인 정보를 받으면 current_user를 기반으로 계정을 찾아야합니다. 이를 위해 계정에 authenticates_many를 사용할 필요가 없습니다. 사용자를 인증 한 다음 계정을 얻으십시오. 설정하려면

컨트롤러는 예에서 https://github.com/binarylogic/authlogic_example/blob/master/app/controllers/user_sessions_controller.rb

참고 봐 : 또한 뷰를 확인하실 수 있습니다 ... 더 영감을.

이렇게하면 사용자를 인증하고 세션을 관리 할 수 ​​있습니다. 로그인하면 자신의 계정을 얻을 수 있어야 계정 당 다른 요청을 볼 수 있습니다. 이를 위해

은 당신의 application_controller.rb에 다음을 추가하여 current_account의 helper_method를 추가

class ApplicationController 
    helper_method :current_account 

    private 

    def current_account 
     current_user.account 
    end 
    memoize :current_account 
end 

또한 기본 CURRENT_USER 및 current_user_session의 helper_method를 추가하는 것을 잊지 마십시오.

이렇게하면 모든 컨트롤러에서 인증 된 사용자의 current_account를 항상 찾을 수 있습니다.