2011-02-27 10 views
0

나는 슈퍼 간단한 인증을 구축하려고 해요. 관리자 비밀번호를 어디에 저장할 지 잘 모르겠습니다. 비밀번호는 어디에 입력해야합니까? 모델, 환경 또는 다른 곳. 그리고 환경 변수에 저장하면 환경 변수에 어떻게 접근 할 수 있습니까? 감사! UPDATE어디 데이터베이스 비밀 번호를 저장

: 난으로 environment.rb에 뭔가를 넣어

ADMIN_PASSWORD = "blablabla" 

과 노력

def authenticate(username, password) 
password = Digest::MD5.hexdigest(password).to_s 
if username == "admin" && password == ENV["ADMIN_PASSWORD"] 
    session[:login] = true 
end 
end 

가 작동하지 인증하는 ...

는 내가 그리고 to_s에 대한 필요성을 생각하지 . 모두에게 감사드립니다.

+0

감사합니다. ADMIN_PASSWORD을 (를) 사용하시오. – Ben

+0

감사합니다. 그것이 작동했습니다 – m80

+0

종이에 그것을 쓰고 금고에 숨 깁니다. – BoltClock

답변

0

데이터베이스가 옵션이 아닌 경우 환경 변수에 저장하는 것이 좋습니다.

당신은 당신이 HTTP 인증에 봤어

ENV["DB_PASSWORD"] # => "something_random" 
+0

올바른 암호 해시 및 원하는 정보 (각 암호에 대한 ex 권한)를 포함 할 수있는 config/admin.yml을 갖는 것이 더 좋습니다. – alternative

0

정말 간단하지만 파일에 저장하는 것이 좋습니다. 암호화하는 것을 잊지 마십시오.

1

환경 변수를 사용할 수 있지만 해싱을 사용하여 암호화 만 설정해야합니다. 시도해보십시오.

password = "abdefghij" 
ENV['PASSWORD_SALT'] = BCrypt::Engine.generate_salt 
ENV['PASSWORD_HASH'] = BCrypt::Engine.hash_secret(password, ENV['PASSWORD_SALT']) 


def authenticate?(password) 
    ENV['PASSWORD_HASH'] == BCrypt::Engine.hash_secret(password, ENV['PASSWORD_SALT']) 
end 

authenticate?("123456789") # false 
authenticate?("abdefghij") # true 
+0

혼란 스럽습니다. 더 자세한 정보를 제공 할 수 있습니까? 이 예제에서 내 비밀번호 란 무엇입니까? – m80

+0

처음 두 줄을 사용하여 ENV 암호를 설정 한 다음 제공된 방법을 사용하여 암호가 올바른지 테스트 할 수 있습니다. –

+0

명확히하기 위해 예제를 업데이트했습니다. –