Rails金属http基本身份验证

时间:2013-02-16 02:25:57

标签: ruby-on-rails-3 http-basic-authentication

当远程服务命中我的一个Rails金属端点时,我正在尝试使用HTTP基本身份验证。

我想知道如何访问请求的用户名和密码。到目前为止,我已打印出整个env对象,无法在该对象的任何位置找到用户名或密码。

相反,我明白了 “HTTP_AUTHORIZATION”=>“基本YW5yZ3JpZDpzYWZlbWFpbA ==”,“PASSENGER_CONNECT_PASSWORD”=>“U4vAn6lVAOe2C8nIQSWT93j3SFJkA5VxOicSeDspF9a”

但我不知道该如何处理。

理想情况下,我想做类似的事情:

class MyHook
  def self.call(env)
    user = env[...]
    pass = env[...]
    if (user == "foo" && pass == "pass")
      # do stuff
    end
  end
end

谢谢!

1 个答案:

答案 0 :(得分:1)

require 'base64'
# Decode the colon-separated, base64-encoded user and password after "Basic "
user, pass = Base64.decode64(env['HTTP_AUTHORIZATION'].split[1]).split ':', 2

我肯定会删除您用问题编码的密码。 : - )