2013-02-16 4 views
0

Я пытаюсь использовать базовую аутентификацию HTTP, когда удаленная служба попадает на одну из моих конечных точек Rails.Rails metal http basic auth

Мне интересно, как получить доступ к имени пользователя и паролю запроса. Пока я распечатал весь объект 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
require 'base64' 
# Decode the colon-separated, base64-encoded user and password after "Basic " 
user, pass = Base64.decode64(env['HTTP_AUTHORIZATION'].split[1]).split ':', 2 

Я бы определенно удалил пароль, который вы опубликовали, в соответствии с вашим вопросом. :-)