2011-02-27 51 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 2011-02-27 20:12:04

+0

非常感謝!它的工作 – m80 2011-02-27 20:13:31

+0

寫在一張紙上,並將其隱藏在一個安全的地方。 – BoltClock 2011-02-27 20:24:39

回答

0

如果數據庫不是一個選項,我寧願存儲在環境變量。

您可以像

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

更好的是有一個config/admin.yml可以包含有效的密碼哈希列表和任何其他信息,您可能需要(前權限爲每個密碼) – alternative 2011-02-27 21:32:03

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 2011-02-27 20:30:39

+0

您將首先使用前兩行設置您的ENV密碼,然後可以使用提供的方法測試密碼是否正確。 – 2011-02-27 21:25:54

+0

我更新了示例以澄清。 – 2011-02-27 21:27:38

相關問題