Ruby on rails 除了数据库,在哪里存储密码

Ruby on rails 除了数据库,在哪里存储密码,ruby-on-rails,authentication,passwords,Ruby On Rails,Authentication,Passwords,我正在尝试构建一个超级简单的身份验证。我不确定在哪里存储管理员密码。我应该把密码放在哪里?模型、环境或其他地方。?若我将环境变量存储在环境中,那个么如何访问它呢。谢谢 更新: 我在环境中放了些东西 ADMIN_PASSWORD = "blablabla" 并尝试验证 def authenticate(username, password) password = Digest::MD5.hexdigest(password).to_s if username == "admin" &&

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

更新:

我在环境中放了些东西

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
不工作


我想没必要去。谢谢大家。

真正简单的方法是将其放入一个文件中,但不要忘记对其进行加密。

如果数据库不是一个选项,我更喜欢将其存储在环境变量中

您可以像这样访问它们

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

您研究过HTTP身份验证吗

可以使用环境变量,但应该使用哈希将其设置为加密。尝试:

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

把它写在一张纸上,藏在保险箱里。我很困惑。你能提供更多细节吗?在本例中,我的密码是什么?您将首先使用前两行设置您的ENV密码,然后可以使用提供的方法测试密码是否正确。最好是有一个config/admin.yml,其中可以包含有效密码哈希列表和您可能需要的任何其他信息(每个密码的权限除外)