2010-09-11 16 views

Respuesta

15

Desde el source parece que puede simplemente especificar usuario y contraseña como parte de su objeto de solicitud.

Ha intentado algo así como:

r = Request.new({:user => "username", :password => "password"}) 

Además, si se mira hacia abajo en la sección de Shell de la ReadMe tiene un ejemplo de especificar como parte de restshell.

$ restclient https://example.com user pass 
>> delete '/private/resource' 
+0

Considere incluir el módulo en uso para mejorar esto. p.ej. 'RestClient :: Request' y agregar más contexto para que el ejemplo que proporcionó sea completamente funcional –

40

La forma más sencilla es la de insertar los datos en la URL:

RestClient.get "http://username:[email protected]" 
+0

Estaba buscando cómo realizar la autenticación sin tener que inicializar una RestClient :: Request. +1 para el uso del método RestClient.get. PERO ¿el nombre de usuario y la contraseña no requieren escaparse? Parece que no es tan fácil como parece. – AgostinoX

+2

¿Qué pasa si mi nombre de usuario tiene un carácter '@'? – Sai

+0

... pero si tienes caracteres especiales como # en tu contraseña, obtienes excedimiento: InvalidURIError: URI incorrecto (¿no es URI?) – territorial

28

Aquí es un ejemplo de código de trabajo, donde yo apoyo basicauth opcional, pero no requieren que el usuario y la contraseña ser incrustado en la 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 

hacer la nota si @my_user@mypass y no se crean instancias, funciona bien sin basicauth.

Cuestiones relacionadas