2012-05-17 3 views
1

Rails 3.0.10 응용 프로그램의 인증에 authlogic 및 omniauth를 사용하고 있습니다. 그러나 omniauth 공급자로부터 콜백을 받으면 사용자에게 로그인 할 수 있도록 새 사용자 세션을 만들 수 없습니다.authlogic에서 암호없이 새 사용자 세션 만들기

other responses (심지어는 authlogic docs)에서도 UserSession.create(@user, true)을 사용하면 새 세션을 만들고 유지할 수 있어야한다고 나와 있습니다.

그러나 이것은 나를 위해 작동하지 않습니다. @user에 암호가 데이터베이스에있는 경우에만 작동합니다 (db에 암호를 직접 삽입 함).

타사 인증 공급자를 사용할 때 비밀번호가 없으므로 사용자를 로그인 할 수 없습니다.

authlogic에서 비밀번호없이 사용자를 로그인하는 방법에 대한 아이디어가 있으십니까?

감사합니다.

답변

1

당신은 당신의 User 모델이 같은 작업을 수행 할 수 있습니다

acts_as_authentic do |config| 
    external = Proc.new { |r| r.externally_authenticated? } 

    config.merge_validates_confirmation_of_password_field_options(:unless => external) 
    config.merge_validates_length_of_password_confirmation_field_options(:unless => external) 
    config.merge_validates_length_of_password_field_options(:unless => external) 
end 

externally_authenticated?

어떤 사용자 정보를 제공하고,이 omniauth 제공 업체 중 하나 인 경우, true를 반환됩니다 확인하는 사용자에 단지 방법 .

+0

사용자가 omniauth를 통해 인증 받았는지 여부를 어떻게 확인하고 있습니까? ie'externally_authenticated? '에 무엇을 사용하고 있습니까? – x1a4

+0

설정에서 외부를 선언하고 옵션으로 전달할 수 없습니다. 나는 그것이 작동하기위한 옵션으로'externally_authenticated? '를 전달해야만했다. 메소드 구현은 한 줄짜리'! authentications.empty? 또는 password.blank? ' – codinguser

관련 문제