sinatra,rack auth basic和从文件中查找

时间:2012-09-20 09:17:24

标签: ruby sinatra rack

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

示例yaml config / 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

1 个答案:

答案 0 :(得分: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]