2010-02-19 18 views
5

Ich versuche, den Rest-Client-Edelstein zu verwenden, um ein paar kleine Aufgaben für meine App zu tun, die Authlogic verwendet, um Benutzer zu authentifizieren. Von Rest-Client-API, ich sehe, dass ein notwendigen Daten für den Login-Prozess wie diese Beiträge verfassen könnenRestclient Anmeldung mit 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 

bei meiner Entwicklung lügt Sehen, sehe ich, dass die App in mir angemeldet haben und umgeleitet mich richtig die private Seite des Benutzers. Allerdings, wenn ich versuchte dann zu ‚Reload‘ der privaten Seite,

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

ich wieder auf die Login-Seite zurückgebracht werde, als ob ich nicht angemeldet war. Also habe ich mich gefragt, ob dies zu tun hat, mit etwas namens die Sitzung oder Cookies?

Ich habe cURL verwendet, um dieses Szenario erfolgreich zu reproduzieren, wobei ich den Schalter '-c cookie.txt' verwende, um Informationen über meine bereits angemeldete Person zu speichern und den Schalter '-b cookie.txt' für jeden Anruf zu verwenden um dem entfernten Server meine Echtheit mitzuteilen. Ich kann dieses Konzept von einer Marke auf Ihrem Handgelenk verstehen, wenn Sie in einen Themenpark oder eine Bar gehen, wo sie wissen, dass Sie bezahlt haben. Einen solchen Mechanismus finde ich im RestClient jedoch nicht. Jede Hilfe wäre großartig, um dies zu lösen. Es macht mir nichts aus, auch andere HTTP-Clients zu testen.

Grüße

Antwort

7

Wenn Sie Authlogic verwenden, können Sie die Single Use Token statt Benutzer/geben werden. Das Single Use Token ist speziell für API-Aufrufe gedacht, so wie es hier klingt.

Siehe: The rdocs here

+0

Danke Josh! Ich werde jetzt nachsehen. Jetzt mache ich mir Sorgen über das Wort "Single" in der API. Bedeutet das, dass ich es nicht noch einmal zum Einloggen verwenden kann? Oder ändert es sich jedes Mal, wenn ich es benutze? –

+1

@Nik es bedeutet nur, dass Sie es bei jeder Anfrage bereitstellen müssen. Anstatt also eine Anmeldung zu simulieren und zu versuchen, die Cookies weiterzugeben, fügen Sie einfach das Token hinzu. Es ändert sich nicht automatisch. Stellen Sie sich das wie einen API-Schlüssel vor. –

+0

Das klingt großartig, genau das, was ich eigentlich wollte. Ich benutze Authlogic mit Ryan Bates 'Railscast als Tutorial, das SingleAccesstoken nicht abdeckt. Mein User.rb sieht so aus: create_table "users",: force => true do | t | t.string "username" t.string "email" 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 "verderblicher_Token",: default => "",: null => false Ende Wie kann ich die Token-Funktionalität für Einzelzugriff erhalten? Nur eine Migration? –