我正在尝试构建一个超级简单的身份验证。我不确定存储管理员密码的位置。我应该把密码放在哪里?模特,环境或其他地方。?如果我将环境变量存储在环境中,如何访问环境变量。谢谢!
更新:
我把一些东西放在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 :(得分: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)