0

リモート サービスが Rails のメタル エンドポイントの 1 つにヒットしたときに、HTTP 基本認証を使用しようとしています。

リクエストのユーザー名とパスワードにアクセスする方法を知りたいです。これまでのところ、env オブジェクト全体を出力しましたが、そのオブジェクトのどこにもユーザー名またはパスワードが見つかりません。

代わりに、"HTTP_AUTHORIZATION"=>"Basic 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

ありがとう!

4

1 に答える 1

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

あなたが質問とともにエンコードして投稿したパスワードは、私は間違いなく破棄します。:-)

于 2013-03-02T16:55:51.623 に答える