2011-02-27 56 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

相关问题