2010-02-19 21 views
5

Estoy tratando de utilizar la joya de Rest-client para realizar algunas tareas pequeñas para mi aplicación que utiliza Authlogic para autenticar usuarios. Desde el API del Resto-cliente, veo que uno puede publicar los datos necesarios para el proceso de inicio de sesión como esto:Inicio de sesión de cliente de cliente con authlogic

require 'rest_client' 
RestClient.post "http://127.0.0.1:3000/user_sessions", {:user_session => {:username => 'myusername', :password => 'mypassword'}}.to_json, :content_type => :json, :accept => :json 

Mirando mi log de desarrollo, veo que la aplicación ha iniciado sesión en mí y me redirecciona correctamente a la página privada del usuario. Sin embargo, cuando el entonces traté de 'recarga' la página privada,

RestClient.get 'http://127.0.0.1:3000/users/1' 

soy llevado a la página de inicio de sesión de nuevo, como si no hubiera iniciado la sesión. Así que me preguntaba si esto tiene que ver con algo llamado la sesión o las cookies?

He utilizado cURL para reproducir este escenario con éxito, donde uso el interruptor '-c cookie.txt' para guardar información sobre mi sesión ya iniciada, y uso el interruptor '-b cookie.txt' para cada llamada decirle al servidor remoto acerca de mi autenticidad. Puedo entender este concepto como un sello en tu muñeca cuando vas a un parque temático o a un bar donde saben que pagaste. Pero no encuentro mención de tal mecanismo en RestClient. Cualquier ayuda sería genial para resolver esto. Tampoco me molesta probar otros clientes http.

Saludos

Respuesta

7

Si utiliza Authlogic, que podría llegar a utilizar el uso individual de emergencia en lugar de usuario/contraseña. El Token de uso único es específicamente para llamadas API, como lo que parece que estás haciendo aquí.

Ver: The rdocs here

+0

Gracias Josh! Lo investigaré ahora. Ahora, me preocupa la palabra 'Single' en la API, ¿eso significa que no puedo volver a usarla para iniciar sesión? ¿O cambia cada vez que lo uso? –

+1

@Nik solo significa que debe proporcionarlo en cada solicitud. Entonces, en lugar de simular un inicio de sesión y tratar de pasar las cookies, simplemente incluiría el token. No cambia automáticamente Piense en ello como una clave API. –

+0

Eso suena genial, exactamente lo que realmente quería. Utilizo Authlogic con los rieles de Ryan Bates como tutorial, que no cubre SingleAccesstoken. Mi User.rb se parece a esto create_table "users",: force => true do | t | t.string "nombre de usuario" t.string "e-mail" t.string "crypted_password" t.string "password_salt" t.string "persistence_token" t.datetime "created_at" t.datetime "updated_at" t.integer "person_id" t.string "perishable_token",: default => "",: null => false end ¿Cómo puedo obtener la funcionalidad de token de acceso único? Solo una migración? –

Cuestiones relacionadas