有谁知道如何使用RestClient进行基本身份验证?
我需要通过他们的RESTful API在GitHub上创建一个私有存储库。
答案 0 :(得分:41)
最简单的方法是在网址中嵌入详细信息:
RestClient.get "http://username:password@example.com"
答案 1 :(得分:30)
以下是我支持可选basicauth的工作代码示例,但不要求在URL中嵌入用户和密码:
def get_collection(path)
response = RestClient::Request.new(
:method => :get,
:url => "#{@my_url}/#{path}",
:user => @my_user,
:password => @my_pass,
:headers => { :accept => :json, :content_type => :json }
).execute
results = JSON.parse(response.to_str)
end
请注意,如果@my_user
和@mypass
未实例化,则在没有basicauth的情况下工作正常。
答案 2 :(得分:15)
从source看来,您可以将用户和密码指定为请求对象的一部分。
你有没有试过像:
r = Request.new({:user => "username", :password => "password"})
另外,如果你向下看ReadMe的Shell部分,它有一个将它指定为restshell
的一部分的例子。
$ restclient https://example.com user pass
>> delete '/private/resource'
答案 3 :(得分:1)
这有效并遵循RFC 7617 for Http Basic Authentication:
RestClient::Request.execute(
method: :post,
url: "https://example.com",
headers: { "Authorization" => "Basic " + Base64::encode64(auth_details) },
payload: { "foo" => "bar"}
)
def auth_details
ENV.fetch("HTTP_AUTH_USERNAME") + ":" + ENV.fetch("HTTP_AUTH_PASSWORD")
end
答案 4 :(得分:0)
感谢Kelsey Hannan:
load