2013-07-15 2 views
0

기본적으로 질문하는대로 묻습니다. verify_password_method 상태에 대한AuthLogic에서 암호화 된 암호를 허용해야합니까?

AuthLogic 문서 :

암호를 확인하는 데 사용되는 모델의 메소드의 이름. 이것은 인스턴스 메소드 여야합니다. 원시 암호와 crytped 암호를 받아 들일 준비가되어 있어야합니다.

이전 버전과 같이 일반 텍스트 암호를 저장하지 않고 시스템의 현재 위장 동작을 유지할 수 있기 때문에이 기능을 지원하고 싶습니다. 그러나 데이터베이스의 crypted_password에 대한 간단한 문자열 비교가 일반 일반 텍스트 암호를 저장하는 것만 큼 나쁘다고 생각합니다.

여기에 내용이 누락되었거나 AuthLogic에서 암호화 된 암호를 수락 할 수있는 다른 방법이 있습니까?

참고로

, 이것은 내가 valid_password? 방법을 쓰는가는 방법입니다

def valid_password?(password, check_from_database = nil) 
    if password == self.crypted_password 
    true 
    else 
    super(password, check_from_database) 
    end 
end 
+0

'valid_password? '는 무엇을 위해 사용됩니까? – juanpastas

+0

'valid_password? '는'verify_password_method'가 사용자가 올바른 암호를 입력했는지를 결정하기 위해 사용하는 기본 방법입니다. 'super'에 의해 호출되는 기본 메소드는 248 행에서 찾을 수 있습니다 : https://github.com/binarylogic/authlogic/blob/master/lib/authlogic/acts_as_authentic/password.rb 그래서 기본 구현은 일반 텍스트를 허용합니다 암호를 해시 된 암호와 비교합니다. –

답변

0

확인을, 그것은 끔찍하게 문서화되지 않은 것 같다 있지만 (이 작업을 수행하는 더 쉬운 방법이 있다고 밝혀, 그리고하지 않았다 이를 달성하는 방법에 대한 Google의 검색을 참조하십시오).

Authlogic::Session::Base.new(@user, true)

그 선은 자격 증명을 확인하지 않고 세션의 생성을 허용한다. 사용자가 이미 자신을 올바르게 식별했다고 가정하기 때문에 분명히주의해야합니다. 현재 사용자가 관리 사용자인지 확인하는 것이므로 내 용도로는 안전합니다.

관련 문제