Meilleure solution pour l'authentification dans Ruby on Rails [fermé]


84

Je recherche une solution prédéfinie que je peux utiliser dans mon application RoR. Je recherche idéalement quelque chose de similaire à l'authentification par formulaires ASP.NET qui fournit la validation des e-mails, les contrôles d'inscription et permet aux utilisateurs de réinitialiser leurs mots de passe. Oh ouais, et me permet facilement de tirer l'utilisateur qui est actuellement connecté à l'application.

J'ai commencé à examiner les pièces déjà écrites, mais j'ai trouvé cela vraiment déroutant. J'ai regardé LoginGenerator, RestfulAuthentication, SaltedLoginGenerator, mais il ne semble pas y avoir un seul endroit qui propose d'excellents tutoriels ou en offre une comparaison. S'il y a un site que je n'ai tout simplement pas encore découvert, ou s'il existe une norme de facto que la plupart des gens utilisent, j'apprécierais l'aide.

Réponses:


83

AuthLogic semble être le petit nouveau sur le bloc et semble être la prochaine évolution de restful_authentication, plus facile à utiliser, etc.

http://github.com/binarylogic/authlogic/tree/master

Edit: maintenant que Rails 3 est sorti, Devise semble être le nouveau, le nouvel enfant du quartier

https://github.com/plataformatec/devise ou j'ai lancé ma propre authentification maintenant avec le has_secure_passwordintégré à Rails http://railscasts.com/episodes/250-authentication-from-scratch-revised

Remarque: Ruby Toolbox est un excellent site pour trouver la meilleure solution actuelle dans diverses catégories (en fonction du nombre d'observateurs GitHub):

http://ruby-toolbox.com/categories/rails_authentication.html


J'envisagerais également d'utiliser authlogic. c'est beaucoup plus propre que restful_auth. Authlogic a appris de toutes les solutions précédentes et les a reconditionnées dans une solution plus propre et plus personnalisable
taelor

J'ai suivi vos conseils et suis allé avec Authlogic, et j'en suis vraiment ravi. La configuration peut prendre un peu plus de temps, ce qui est très propre et facile à comprendre. Il n'y a pas de piles effrayantes de code généré.
Guy C

Ouais, la configuration prend certainement plus de temps. J'aurais aimé qu'il ait supprimé un peu de l'abstraction et qu'il soit livré avec des éléments dont tout le monde a besoin comme un mot de passe oublié et des confirmations par e-mail incluses. Mais dans l'ensemble, c'est toujours assez bon.
Brian Armstrong

J'ai pu le combiner avec OpenID et RPXNow aussi, ce qui s'est avéré génial, exemple ici: acheteursvote.com/user_session/new
Brian Armstrong

L'exemple de projet facilite grandement la mise en route. Git clonez simplement le référentiel, copiez-le dans un fichier database.yml et vous avez un site entièrement authentifié prêt.
Casey Watson

22

Je recommanderais vraiment l' authentification reposante . Je pense que c'est à peu près la norme de facto.


1
Je soutiendrais ceci. J'ai récemment dû mettre en œuvre un système d'authentification multi-site assez complexe, que j'ai basé sur la conception de RestfulAuth, fournissant la même API au reste de l'application que RA le ferait. lire le code :-)
Laurie Young

10

Pour une solution vraiment simple, optez pour Clearance .

Si vous recherchez plus d'options, Devise est une excellente solution. Il utilise Warden, un système d'authentification basé sur un rack.


1
Je peux garantir Devise. Je l'ai configuré dans mon application et je peux dire qu'il est facile à utiliser, du moins pour moi en tant que débutant. J'ai blogué sur mon expérience avec celui-ci ici: therealmattslay.blogspot.com/2010/06
...

Désolé ... Voici le lien corrigé: mattslay.com/devise-authentication-for-rails
MattSlay


3

Juste une note, LoginGenerator et SaltedLoginGenerator ont été remplacés par Restful Authentication et ne sont pas pris en charge sur les nouvelles versions de Rails - ne perdez pas de temps avec eux, même s'ils étaient excellents à l'époque.


3

Je voudrais également souligner un excellent tutoriel / discussion sur l'extension des fonctionnalités de base de l'authentification Restful, au cas où vous recherchez quelque chose d'un peu plus robuste.


1
S'il vous plaît, ne me trouvez pas très impoli, mais je pense que l'entrée du forum est un exemple de la pire partie de l'authentification reposante. Il y a une multitude de fonctionnalités manquantes et voici un ensemble d'étapes très longues (et contradictoires) pour ajouter ces fonctionnalités une par une. Quel que soit le contraire de DRY, je suis presque sûr que c'est tout. Seulement, vous ne vous répétez pas, vous répétez des centaines d'autres développeurs pour inclure des éléments qui auraient dû être inclus ou facultatifs pour RA depuis le début.
John Munsch

3

J'apprécie vraiment l'autorisation de thinkbot. Très simple et a quelques bons crochets et est testable.


3

AuthLogic semble être ce que vous voulez pour cela. C'est très configurable, et bien qu'il ne génère pas le code pour vous, c'est assez facile à utiliser. Pour la validation des e-mails et la récupération du mot de passe, vous souhaiterez probablement utiliser la :perishable_tokencolonne. AuthLogic s'en charge, vous n'avez besoin de le réinitialiser que lorsqu'il est utilisé. Pour plus d'informations sur la configuration d'une application de base, vous pouvez jeter un œil à Railscast de Ryan Bates sur AuthLogic et à l'exemple d'application "officiel". Ben Johnson, le créateur d'AuthLogic a également écrit un article de blog sur la façon de réinitialiser les mots de passe de manière REST.

Malheureusement, je ne peux pas publier plus d'un lien, mais les liens vers le railscast, le billet de blog de réinitialisation du mot de passe et l'exemple d'application sont tous dans le README (voir le repo AuthLogic pour le README)

Mise à jour: je peux maintenant publier plus de liens, donc j'en ai lié d'autres. Merci marinatime d'avoir ajouté le lien entre-temps



2

restful_authentication est un outil puissant qui est très flexible et fournit la plupart de ce que vous recherchez prêt à l'emploi. Cependant, quelques mises en garde:

  1. Ne pensez pas en termes de «contrôles». Dans Rails, le modèle, la vue et le contrôleur sont beaucoup plus indépendants que dans ASP.NET de type «Webforms». Déterminez ce que vous voulez de chaque couche indépendamment, écrivez des tests / spécifications correspondants et assurez-vous que chaque couche fait ce que vous attendez.
  2. Même si vous utilisez un plugin, il n'y a pas de substitut à la lecture (au moins une partie) du code généré. Si vous avez une vue d'ensemble de ce qui se passe sous le capot, vous trouverez le débogage et la personnalisation beaucoup plus faciles.

2

Le plugin restful_authentication et les autres plugins qui l'étendent, répondent parfaitement à vos besoins. Une recherche rapide sur github.com révélera de nombreux tutoriels, exemples et extensions. Allez simplement ici:
- http://github.com/search?q=restful_authentication

Il existe plusieurs projets qui utilisent restful_authentication uniquement pour fournir des exemples d'application Rails simples avec uniquement les parties d'authentification.

  1. http://github.com/fudgestudios/bort - Une application de rails de base avec: Authentification RESTful
  2. http://github.com/mrflip/restful_authentication_example - Un autre projet avec un excellent exemple d'utilisation de restful_authentication
  3. http://github.com/activefx/restful_authentication_tutorial - Idem que ci-dessus, avec quelques autres plugins fournis.
  4. http://railscasts.com/episodes/67-restful-authentication - un excellent screencast expliquant restful_authentication

Ces informations devraient suffire pour vous aider à trouver des têtes et des queues ... bonne chance.


2

Je viens de mettre à jour ceci: Railscast # 250 de Ryan Bates montre la construction d'un système d'authentification à partir de zéro ....


2
Bien que le RailsCast sur un système d'authentification sur mesure soit excellent (et j'ai implémenté un système similaire plusieurs fois), il n'est en aucun cas pré-construit et ne fournit pas toutes les fonctionnalités d'une configuration comme Devise.
Colin R

D'accord, mais Devise peut être assez volumineux. À mon avis, il est possible de gagner beaucoup de temps et de mal au cœur en créant votre propre système d'authentification à moins que vous n'allez vraiment profiter pleinement des fonctionnalités offertes par Devise.
Adam Jonas

2
Je recherche une solution prédéfinie que je peux utiliser dans mon application RoR.
Colin R

0

Un autre vote pour Clearance - peut-être pas aussi personnalisable ou «in» qu'authlogic, mais en termes de simplement pouvoir le mettre en place et partir, cela vaut vraiment la peine d'y jeter un coup d'œil.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.