38 votes

L'utilisation de jetons Devise pour vous connecter est-elle intégrée?

Donc, je suis en train d'utiliser des jetons à Concevoir (version 1.0.3 avec Rails 2.3.8) pour permettre à un utilisateur d'ouvrir une session, mais je ne suis pas vraiment sûr où commencer.

http://zyphdesignco.com/blog/simple-auth-token-example-with-devise

Le tutoriel ci-dessus m'a aidé à tourner sur le jeton de la fonctionnalité, et a montré comment générer (ou supprimer) des jetons...mais le POINT de l'ensemble des jetons est de les utiliser pour autoriser un utilisateur, correct?

Quand je regarde un utilisateur dans la console, je peux dire de l'utilisateur.authentication_token, et obtenir quelque chose comme: "Qm1ne93n_XkgmQTvxDmm", qui est très bien...mais où dois-je aller à partir de là?

J'ai essayé de frapper le sign_in de la racine à l'aide de la commande suivante en ligne de commande:

curl-d "authentication_token=Qm1ne93n_XkgmQTvxDmm" localhost:3000/utilisateurs/sign_in

Et n'a certainement pas réussir à vous connecter.

Dans les séances de contrôleur, je vois qu'ils appellent:

authentifier(resource_name)

Qui je suppose est quelque part dans le module:

inclure Concevoir::Contrôleurs::InternalHelpers

ce qui est inclus, mais je ne sais pas où chercher pour que (ce n'est certainement pas dans la source du contrôleur de dossier). Si je pouvais regarder comment authentifier les œuvres, je pourrais voir si il la REGARDE même des jetons...

N'a Concevoir laissez vous fait une session avec des jetons, ou est-il juste un cadre pour les générer? Si elle ne vous permettent de connecter avec eux...COMMENT faites-vous cela? Pouvez-vous pas utiliser de boucle (c'est à dire, il faut être dans un navigateur? Si oui, je serais hafta rouler ma propre solution, j'ai BESOIN de la non-prise en charge du navigateur.). Si ça ne marche pas, comment puis je tire mon propre?

36voto

Anthony Panozzo Points 890

Ma compréhension est que vous pouvez utiliser les jetons de vous connecter ou de frapper arbitraire pages qui ont besoin d'authentification, même avec cURL. Si vous regardez en config/initializers/devise.rb, il devrait y avoir une ligne qui dit quelque chose comme:

config.token_authentication_key = :auth_token

Quel que soit le nom de l' token_authentication_key est doit correspondre à ce que vous mettez comme la requête ou un paramètre de formulaire dans votre demande. Vous avez utilisé authentication_token dans votre exemple, vous ne savez pas si vous avez changé de concevoir.rb corresponde ou non.

Si vous voulez comprendre comment les choses fonctionnent en interne, j'essaierais git clone git://github.com/plataformatec/devise.git et de recherche pour les méthodes que vous avez besoin de précisions, de.

Voici quelques exemples de cURL demandes (j'ai fait une coutume les Utilisateurs: SessionsController qui s'étend Concevoir::SessionsController et remplace la méthode de création de manipuler du JSON.)

class Users::SessionsController < Devise::SessionsController
  def create
    resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new")
    set_flash_message(:notice, :signed_in) if is_navigational_format?
    sign_in(resource_name, resource)

    respond_to do |format|
      format.html do
        respond_with resource, :location => redirect_location(resource_name, resource)
      end
      format.json do
        render :json => { :response => 'ok', :auth_token => current_user.authentication_token }.to_json, :status => :ok
      end
    end
  end
end 

Et puis la boucle demandes que j'ai donné:

curl -X POST 'http://localhost:3000/users/sign_in.json' -d 'user[email]=example@example.com&user[password]=password'
-> {"response":"ok","auth_token":"ABCDE0123456789"}

curl -L 'http://localhost:3000/profile?auth_token=ABCDE0123456789'
-> got page that I wanted that needs authentication

5voto

zero_padded Points 73

voir cet article: http://www.hyperionreactor.net/blog/token-based-authentication-rails-3-and-rails-2

Fondamentalement, tout ce dont vous avez besoin est d’ajouter le jeton à vos demandes et de vous authentifier automatiquement, c’est-à-dire localhost: 3000 / posts.xml? Auth_token = the_token

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X