2010-02-19 7 views
5

J'essaie d'utiliser la gemme Rest-client pour faire quelques petites tâches pour mon application qui utilise Authlogic pour authentifier les utilisateurs. De l'API Rest-client, je vois que l'on peut publier des données nécessaires pour le processus d'ouverture de session comme ceci:Rest-client se connecter avec 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 

regardant mon journal de développement, je vois que l'application est connecté en moi et m'a redirigé correctement la page privée de l'utilisateur. Cependant, quand je puis essayé de « reload » je suis ramené à la page de connexion de la page privée,

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

, comme si je ne l'avais pas connecté. Je me demandais si cela a à voir avec quelque chose appelé la session ou des cookies? J'ai utilisé cURL pour reproduire ce scénario avec succès, où j'utilise le commutateur '-c cookie.txt' pour enregistrer les informations sur ma connexion et utiliser le commutateur '-b cookie.txt' pour chaque appel dire au serveur distant à propos de mon authentification. Je peux comprendre ce concept de comme un timbre sur votre poignet en allant dans un parc à thème ou un bar où ils savent que vous avez payé. Mais je ne trouve aucune mention d'un tel mécanisme dans RestClient. Toute aide serait formidable pour résoudre ce problème. Cela ne me dérange pas d'essayer d'autres clients http, soit.

Cordialement

Répondre

7

Si vous utilisez Authlogic, vous pourriez utiliser l'usage unique jeton au lieu d'utilisateur/pass. Le jeton à usage unique est spécifiquement conçu pour les appels API, comme ce que vous semblez faire ici.

Voir: The rdocs here

+0

Merci Josh! Je vais regarder maintenant. Maintenant, je suis préoccupé par le mot «Single» dans l'API, est-ce que cela signifie que je ne peux plus l'utiliser pour me connecter? Ou change-t-il chaque fois que je l'utilise? –

+1

@Nik cela signifie simplement que vous devez le fournir à chaque demande. Ainsi, au lieu de simuler une connexion et d'essayer de transmettre les cookies, vous devez simplement inclure le jeton. Cela ne change pas automatiquement. Pensez-y comme une clé API. –

+0

Cela semble génial, exactement ce que je voulais vraiment. J'utilise Authlogic avec le railcast de Ryan Bates comme tutoriel, qui ne couvre pas SingleAccesstoken. Mon User.rb ressemble à ceci create_table "users",: force => true do | t | t.string "nom d'utilisateur" 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 "perishable_token",: default => "",: null => false fin Comment obtenir une fonctionnalité de jeton d'accès unique? Juste une migration? –

Questions connexes