4

在 sinatra 应用程序中使用rack::auth::basic,有一种方法可以从简单的 yaml 文件中查找用户和密码(密码是否保持清晰无关紧要)?

示例 yaml 配置/users.yml

---
:users:
  usersA:
    :password: passwordA
    :otherdata: xxxxx
  userB:
    :password: passwordB

我正在尝试的 sinatra 配置块(没有成功)。我如何从 yaml 文件中查找用户?

configure do
  config = YAML::load_file(File.join(Dir.pwd, 'config', 'users.yml'))   
  use Rack::Auth::Basic, "login" do |u, p|
  [u, p] == [u, config[:users][username][:password]]
  end
end
4

1 回答 1

4

简单如:

configure do
  config = YAML::load_file(File.join(Dir.pwd, 'config', 'users.yml'))   
  use Rack::Auth::Basic, "login" do |u, p|
    p == config[:users][u][:password]
  end
end

您还可以考虑将密码存储为 SHA1 并检查为:

Digest::SHA1.hexdigest(p) == config[:users][u][:password]
于 2012-09-20T10:28:04.833 回答