Beste Lösung für die Authentifizierung in Ruby on Rails [geschlossen]

84

Ich suche nach einer vorgefertigten Lösung, die ich in meiner RoR-Anwendung verwenden kann. Ich suche idealerweise etwas Ähnliches wie die ASP.NET Forms-Authentifizierung, die E-Mail-Validierung und Anmeldesteuerung bietet und es Benutzern ermöglicht, ihre Kennwörter zurückzusetzen. Oh ja, und ermöglicht es mir einfach, den Benutzer zu ziehen, der gerade in der Anwendung angemeldet ist.

Ich habe angefangen, mich mit den bereits geschriebenen Stücken zu befassen, aber ich fand es wirklich verwirrend. Ich habe mir LoginGenerator, RestfulAuthentication und SaltedLoginGenerator angesehen, aber es scheint keinen Ort zu geben, der großartige Tutorials bietet oder einen Vergleich davon bietet. Wenn es eine Site gibt, die ich gerade noch nicht entdeckt habe, oder wenn es einen De-facto-Standard gibt, den die meisten Leute verwenden, würde ich mich über die helfende Hand freuen.

Dan Wolchonok
quelle

Antworten:

83

AuthLogic scheint das neue Kind auf dem Block zu sein und scheint die nächste Entwicklung von restful_authentication zu sein, einfacher zu bedienen usw.

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

Edit: Jetzt, wo Rails 3 raus ist, scheint Devise das neue, neue Kind auf dem Block zu sein

https://github.com/plataformatec/devise oder ich habe jetzt meine eigene Authentifizierung mit den has_secure_passwordin Rails integrierten http://railscasts.com/episodes/250-authentication-from-scratch-revised gerollt

Randnotiz: Ruby Toolbox ist eine großartige Website, um die derzeit beste Lösung in verschiedenen Kategorien zu finden (basierend auf der Anzahl der GitHub-Beobachter):

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

Brian Armstrong
quelle
Ich würde wirklich in Betracht ziehen, auch Authlogic zu verwenden. Es ist viel sauberer als restful_auth. Authlogic lernte aus allen vorherigen Lösungen und verpackte sie in eine sauberere, anpassbarere Lösung
Taelor
Ich habe Ihren Rat befolgt und bin zu Authlogic gegangen, und ich bin sehr zufrieden. Das Einrichten kann etwas länger dauern, was sehr sauber und leicht zu verstehen ist. Es gibt keine beängstigenden Stapel generierten Codes.
Guy C
Ja, die Einrichtung dauert auf jeden Fall länger. Ich wünschte, er hätte ein wenig von der Abstraktion dort entfernt und sie mit Dingen geliefert, die jeder braucht, wie vergessenes Passwort und E-Mail-Bestätigungen. Aber insgesamt ist es immer noch ziemlich gut.
Brian Armstrong
Ich konnte es auch mit OpenID und RPXNow kombinieren, was sich als großartig herausstellte. Beispiel hier: customersvote.com/user_session/new
Brian Armstrong
Das Beispielprojekt macht die Inbetriebnahme sehr einfach. Klonen Sie einfach das Repository, kopieren Sie es in eine Datei database.yml und Sie haben eine vollständig authentifizierte Site bereit.
Casey Watson
22

Ich würde Restful Authentication wirklich empfehlen . Ich denke, es ist so ziemlich der De-facto-Standard.

John Topley
quelle
1
Ich würde das unterstützen. Ich musste kürzlich ein ziemlich komplexes Multi-Site-Authentifizierungssystem implementieren, das auf dem RestfulAuth-Design basierte und dem Rest der Anwendung dieselbe API zur Verfügung stellte wie RA Code lesen :-)
Laurie Young
10

Für eine wirklich einfache Lösung gehen Sie mit Clearance .

Wenn Sie nach mehr Optionen suchen, ist Devise eine großartige Lösung. Es verwendet Warden, ein Rack-basiertes Authentifizierungssystem.

Nick Hammond
quelle
1
Ich kann für Devise bürgen. Ich habe es in meiner App eingerichtet und kann sagen, dass es einfach zu bedienen ist, zumindest für mich als relativer Neuling. Ich habe hier über meine Erfahrungen damit gebloggt
MattSlay
Entschuldigung ... Hier ist der korrigierte Link: mattslay.com/devise-authentication-for-rails
MattSlay
3

Es gibt auch RestfulOpenIDAuthentication, wenn Sie zusätzlich zur Kennwortunterstützung OpenID-Unterstützung wünschen.

James A. Rosen
quelle
3

Nur eine Anmerkung: LoginGenerator und SaltedLoginGenerator wurden durch Restful Authentication ersetzt und werden in neueren Rails-Versionen nicht unterstützt. Verschwenden Sie keine Zeit damit, obwohl sie zu dieser Zeit großartig waren.

Pantulis
quelle
3

Ich möchte auch auf ein hervorragendes Tutorial / eine hervorragende Diskussion zur Erweiterung der Kernfunktionalität von Restful Authentication hinweisen, falls Sie etwas Robusteres suchen.

Bryan M.
quelle
1
Bitte halte mich nicht für schrecklich unhöflich, aber ich denke, dass der Forumeintrag ein Beispiel für den schlimmsten Teil der erholsamen Authentifizierung ist. Es gibt eine Vielzahl von fehlenden Funktionen, und hier finden Sie eine sehr lange (und widersprüchliche) Reihe von Schritten, um diese Funktionen einzeln hinzuzufügen. Was auch immer das Gegenteil von DRY ist, ich bin mir ziemlich sicher, dass es das ist. Nur wiederholen Sie sich nicht, Sie wiederholen Hunderte anderer Entwickler, um Dinge einzuschließen, die von Anfang an für RA enthalten oder optional sein sollten.
John Munsch
3

Ich mag die Freigabe von Gedankenbot wirklich. Sehr einfach und hat ein paar gute Haken und ist testbar.

Sam
quelle
3

AuthLogic scheint das zu sein, was Sie dafür wollen. Es ist sehr konfigurierbar und obwohl es den Code nicht für Sie generiert, ist es recht einfach zu verwenden. Für die E-Mail-Validierung und Kennwortwiederherstellung möchten Sie wahrscheinlich die :perishable_tokenSpalte verwenden. AuthLogic kümmert sich darum, Sie müssen es nur zurücksetzen, wenn es verwendet wird. Informationen zum Einrichten einer Basis-App finden Sie in Ryan Bates ' Railscast auf AuthLogic und in der "offiziellen" Beispiel-App. Ben Johnson, der Schöpfer von AuthLogic, hat auch einen Blog-Beitrag darüber geschrieben, wie Passwörter REST-fähig zurückgesetzt werden können.

Leider kann ich nicht mehr als einen Link posten, aber die Links zum Railscast, zum Blog-Beitrag zum Zurücksetzen des Passworts und zur Beispiel-App befinden sich alle in der README (README finden Sie im AuthLogic-Repo).

Update: Jetzt kann ich mehr Links posten, also habe ich noch mehr verlinkt. Vielen Dank marinatime für das Hinzufügen des Links in der Zwischenzeit

sarahhodne
quelle
Railscast Link - Railscasts.com/episodes/160-authlogic
Martinatime
2

restful_authentication ist ein leistungsstarkes Tool, das sehr flexibel ist und das meiste von dem bietet, was Sie suchen. Ein paar Einschränkungen:

  1. Denken Sie nicht in "Kontrollen". In Rails sind Modell, Ansicht und Controller viel unabhängiger als in ASP.NET im Webforms-Stil. Erarbeiten Sie unabhängig von jeder Ebene, was Sie möchten, schreiben Sie entsprechende Tests / Spezifikationen und stellen Sie sicher, dass jede Ebene das tut, was Sie erwarten.
  2. Selbst wenn Sie ein Plugin verwenden, gibt es keinen Ersatz für das Lesen (zumindest einiger) des generierten Codes. Wenn Sie eine umfassende Vorstellung davon haben, was unter der Haube vor sich geht, ist das Debuggen und Anpassen viel einfacher.
domgblackwell
quelle
2

Das Plugin restful_authentication und andere Plugins, die es erweitern, erfüllen Ihre Anforderungen perfekt. Eine schnelle Suche auf github.com zeigt viele Tutorials, Beispiele und Erweiterungen. Gehen Sie einfach hier:
- http://github.com/search?q=restful_authentication

Es gibt mehrere Projekte, die restful_authentication verwenden, um nur Beispiele für eine Bare-Bones-Rails-App mit nur den Authentifizierungsteilen bereitzustellen.

  1. http://github.com/fudgestudios/bort - Eine Basisschienen-App mit: RESTful Authentication
  2. http://github.com/mrflip/restful_authentication_example - Ein weiteres Projekt mit einem hervorragenden Beispiel für die Verwendung von restful_authentication
  3. http://github.com/activefx/restful_authentication_tutorial - Wie oben, mit einigen anderen gebündelten Plugins.
  4. http://railscasts.com/episodes/67-restful-authentication - ein großartiger Screencast, der restful_authentication erklärt

Diese Informationen sollten ausreichen, um Ihnen dabei zu helfen, Kopf und Zahl zu finden ... viel Glück.

Evgeny
quelle
2

Nur aktualisieren: Ryan Bates ' Railscast # 250 zeigt den Aufbau eines Authentifizierungssystems von Grund auf neu ....

Adam Jonas
quelle
2
Während RailsCast auf einem maßgeschneiderten Authentifizierungssystem großartig ist (und ich ein ähnliches System mehrfach implementiert habe), ist es keineswegs vorgefertigt und bietet nicht alle Funktionen, die ein Setup wie Devise bietet.
Colin R
Einverstanden, aber Devise kann ziemlich sperrig sein. Meiner Meinung nach können Sie viel Zeit und Herzschmerz sparen, indem Sie Ihr eigenes Authentifizierungssystem erstellen, es sei denn, Sie werden die Funktionen von Devise wirklich voll ausnutzen.
Adam Jonas
2
Ich suche nach einer vorgefertigten Lösung, die ich in meiner RoR-Anwendung verwenden kann.
Colin R
0

Eine weitere Abstimmung für Clearance - vielleicht nicht so anpassbar oder so "in" wie Authlogic, aber im Hinblick darauf, dass man es einfach an Ort und Stelle ablegen und loslegen kann, lohnt es sich auf jeden Fall, einen Blick darauf zu werfen.

Dave Smylie
quelle