除数据库外还存储密码的位置

时间:2011-02-27 20:01:51

标签: ruby-on-rails authentication passwords

我正在尝试构建一个超级简单的身份验证。我不确定存储管理员密码的位置。我应该把密码放在哪里?模特,环境或其他地方。?如果我将环境变量存储在环境中,如何访问环境变量。谢谢!

更新:

我把一些东西放在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。谢谢大家。

4 个答案:

答案 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

答案 1 :(得分:0)

真的很简单就是将它放在一个文件中,但不要忘记加密它。

答案 2 :(得分:0)

如果数据库不是一个选项,我宁愿存储在Environment变量中。

您可以像

一样访问它们
ENV["DB_PASSWORD"] # => "something_random"

答案 3 :(得分:0)