2010-02-25 3 views
1

아무도 레일을 사용하지 않고 authlogic hasing 알고리즘을 통해 일반 텍스트 암호를 어떻게 실행하는지 알고 있습니까? authlogic의 기본값은 sha512입니다.Rails authlogic 암호 해시 알고리즘을 사용하여 루비 전용

일반 텍스트 암호 데이터베이스 (예, 알고 있습니다 ... 나쁘다)를 가지고 있으며이를 authlogic 설정을 사용하는 새 DB로 가져와야합니다.

이 루비 스크립트는 레일 외부에 있으므로 레일 기반의 authlogic 명령을 사용하고 싶지 않습니다.

나는

가 'authlogic'

내가 모듈을 루비에 새로 온 루비 스크립트

을 필요가 있지만 같은 암호 메소드를 호출하려고했다 :

Authlogic :: ActsAsAuthentic :: Password :: Methods :: InstanceMethods.password ('password_here')

'암호 없음'오류가 발생했지만 authlogic 코드의 모듈 스택에 '암호'방법이 있습니다.

감사합니다.

답변

3

"소금"도 만들어야한다는 것을 기억해야하기 때문에 나는 그걸 똑바로 가져 오려고하지는 않을 것입니다. 당신은 당신의 현재 사람의 각각에 대해 완전히 새로운 "사용자"를 만들어야합니다

User.create({:username => username, :email => email, :password => password, :password_confirmation => password }) 

그 방법은 당신은 그것을 구성하는 방식 authlogic을하고있어 알 수 있습니다. 그리고 사용자 모델이 authlogic을 사용하는 한 authlogic의 방법을 사용하여 비밀번호를 저장합니다.

+0

나는 약간의 길을 잃어 버렸습니다. 이 스크립트에는 현재 사용자 모델 (또는 모든 모델)이 없습니다 (약 60 개의 테이블을 이동하려고 시도 할 때 레일에서 완전히 벗어났습니다). 레일 외부에서 authlogic을 사용하는 사용자 클래스는 어떻게 만들 수 있습니까? 내가 시도 : 클래스 사용자 "조": 암호 => "ㅋ"}) 나에게 오류를 준 끝 – djburdick

1

당신은 Authlogic에

transition_from_crypto_providers 

옵션을 사용할 수 있습니다. 문서에서 인용

은 이제 원래 SHA1과 암호를 암호화한다고 가정 해 봅시다. Sha1이 이고 MD5 으로 파티에 참여하기 시작했으며 더 바꿔서 으로 변경하고 싶습니다. crypt_provider 옵션을 사용하여 새롭게 개선 된 알고리즘을 지정한 다음Authlogic이이 옵션을 사용하여 Sha1에서 으로 전환 중임을 알리십시오. Authlogic 은 사용자를 새로운 알고리즘으로 전환하는 것을 포함하여 모든 것을 처리합니다. 다음 번에 사용자가 로그인하면 이전 알고리즘을 사용하여 액세스 권한이 부여되며 암호는 새 알고리즘으로 다시 저장됩니다. 새로운 사용자는 누구나 으로 새 알고리즘을 분명히 사용합니다 ( ).

이렇게하면 기존 사용자를 기존 암호로 가져올 수 있으며 사용자가 로그인 할 때 업데이트됩니다.

물론

당신이 단지 바로 위의 대답에 http://github.com/binarylogic/authlogic/blob/master/lib/authlogic/crypto_providers/sha512.rb

0

주에서 코드를 복사, 전혀 레일 물건없이, Authlogic에서 암호화 방법을 사용하려면 : 스크립트/콘솔을 사용하십시오 그런 다음 :

load 'ruby_script.rb' 

실행하려면 다음을 입력하십시오. 나는 이것을 irb와 함께 작동 시키려고 노력하고 있었고 물론 이것은 작동하지 않았다.