Najlepsze rozwiązanie do uwierzytelniania w Ruby on Rails [zamknięte]

84

Szukam gotowego rozwiązania, którego mogę użyć w mojej aplikacji RoR. Idealnie szukam czegoś podobnego do uwierzytelniania ASP.NET Forms, które zapewnia walidację poczty e-mail, kontrole rejestracji i umożliwia użytkownikom resetowanie haseł. O tak, i łatwo pozwala mi wyciągnąć użytkownika, który jest aktualnie zalogowany do aplikacji.

Zacząłem przeglądać już napisane fragmenty, ale okazało się, że są one bardzo zagmatwane. Patrzyłem na LoginGenerator, RestfulAuthentication, SaltedLoginGenerator, ale nie ma jednego miejsca, które ma świetne samouczki lub zapewnia ich porównanie. Jeśli istnieje witryna, której jeszcze nie odkryłem, lub jeśli istnieje de facto standard, z którego korzysta większość ludzi, byłbym wdzięczny za pomocną dłoń.

Dan Wolchonok
źródło

Odpowiedzi:

83

AuthLogic wydaje się być nowym dzieckiem na bloku i wydaje się być kolejnym ewolucją restful_authentication, łatwiejszego w użyciu itp.

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

Edycja: teraz, gdy Rails 3 jest niedostępny, Devise wydaje się być nowym, nowym dzieckiem w bloku

https://github.com/plataformatec/devise lub przeprowadziłem teraz własne uwierzytelnianie z has_secure_passwordwbudowanym w Railsy http://railscasts.com/episodes/250-authentication-from-scratch-revised

Uwaga dodatkowa: Ruby Toolbox to świetna strona do znajdowania aktualnie najlepszego rozwiązania w różnych kategoriach (na podstawie liczby obserwatorów GitHub):

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

Brian Armstrong
źródło
Naprawdę rozważyłbym również użycie authlogic. jest dużo czystszy niż restful_auth. Authlogic wyciągnął wnioski ze wszystkich poprzednich rozwiązań i przepakował je w czystsze, bardziej konfigurowalne rozwiązanie
taelor
Skorzystałem z twojej rady i wybrałem Authlogic i jestem bardzo zadowolony. Konfiguracja może zająć trochę więcej czasu, co jest bardzo przejrzyste i łatwe do zrozumienia. Nie ma strasznych stosów wygenerowanego kodu.
Guy C
Tak, konfiguracja zajmuje więcej czasu. Żałuję, że nie usunął tam trochę abstrakcji i nie wysłał go z rzeczami, których wszyscy potrzebują, takimi jak zapomniane hasło i potwierdzenia e-mailowe. Ale ogólnie rzecz biorąc, nadal jest całkiem niezły.
Brian Armstrong,
Udało mi się połączyć to z OpenID i RPXNow, co okazało się niesamowite, przykład tutaj: buyersvote.com/user_session/new
Brian Armstrong.
Przykładowy projekt bardzo ułatwia rozpoczęcie pracy. Po prostu sklonuj repozytorium, skopiuj do pliku database.yml i masz gotową w pełni uwierzytelnioną witrynę.
Casey Watson
22

Naprawdę polecam Restful Authentication . Myślę, że jest to de facto standard.

John Topley
źródło
1
Popieram to. Niedawno musiałem zaimplementować dość złożony system uwierzytelniania wielu witryn, który oparłem na projekcie RestfulAuth, dostarczając to samo API do reszty aplikacji, co RA. przeczytaj kod :-)
Laurie Young
10

Aby uzyskać naprawdę proste rozwiązanie, wybierz Wyprzedaż .

Jeśli szukasz więcej opcji, Devise to świetne rozwiązanie. Używa Warden, który jest systemem uwierzytelniania opartym na szafie.

Nick Hammond
źródło
1
Mogę ręczyć za Devise. Ustawiłem to w mojej aplikacji i mogę powiedzieć, że jest łatwy w użyciu, przynajmniej dla mnie jako względnego nowicjusza. I napisał o moim doświadczeniu z nim tutaj: therealmattslay.blogspot.com/2010/06/...
MattSlay
Przepraszamy ... Oto poprawiony link: mattslay.com/devise-authentication-for-rails
MattSlay
3

Istnieje również RestfulOpenIDAuthentication, jeśli chcesz obsługiwać OpenID oprócz obsługi haseł.

James A. Rosen
źródło
3

Uwaga, LoginGenerator i SaltedLoginGenerator zostały zastąpione przez Restful Authentication i nie są obsługiwane w nowszych wersjach Railsów - nie trać na nie czasu, chociaż były wtedy świetne.

pantulis
źródło
3

Chciałbym również zwrócić uwagę na doskonały samouczek / dyskusję na temat rozszerzenia podstawowej funkcjonalności Restful Authentication, na wypadek, gdybyś szukał czegoś bardziej niezawodnego.

Bryan M.
źródło
1
Proszę nie myśl, że jestem okropnie niegrzeczny, ale myślę, że ten wpis na forum jest przykładem najgorszej części Restful Authentication. Istnieje wiele brakujących funkcji, a oto bardzo długi (i sprzeczny) zestaw kroków do dodawania tych funkcji pojedynczo. Niezależnie od przeciwieństwa DRY, jestem prawie pewien, że to wszystko. Tylko ty się nie powtarzasz, powtarzasz setki innych programistów, aby uwzględnić rzeczy, które powinny być dołączone lub opcjonalne dla RA od samego początku.
John Munsch,
3

Naprawdę podoba mi się odprawa myślobota. Bardzo prosty, ma kilka dobrych haczyków i jest testowalny.

sam
źródło
3

AuthLogic wydaje się być tym, czego chcesz do tego. Jest bardzo konfigurowalny i chociaż nie generuje kodu dla Ciebie, jest dość łatwy w użyciu. Do weryfikacji adresu e-mail i odzyskiwania hasła prawdopodobnie zechcesz użyć tej :perishable_tokenkolumny. AuthLogic dba o to, wystarczy zresetować go, gdy jest używany. Aby uzyskać informacje o tym, jak skonfigurować podstawową aplikację, zapoznaj się z Railscast Ryana Batesa w AuthLogic i „oficjalną” przykładową aplikacją. Ben Johnson, twórca AuthLogic, napisał również post na blogu o tym, jak RESTfully resetować hasła.

Niestety nie mogę opublikować więcej niż jednego linku, ale linki do railscast, wpis na blogu resetowania hasła i przykładowa aplikacja są w README (zobacz repozytorium AuthLogic dla README)

Aktualizacja: Teraz mogę zamieścić więcej linków, więc dodałem więcej linków. Dziękuję marinatime za dodanie linku w międzyczasie

sarahhodne
źródło
Railscast link - railscasts.com/episodes/160-authlogic
martinatime
2

restful_authentication to potężne narzędzie, które jest bardzo elastyczne i zapewnia większość tego, czego szukasz po wyjęciu z pudełka. Jednak kilka zastrzeżeń:

  1. Nie myśl w kategoriach „kontroli”. W Railsach model, widok i kontroler są znacznie bardziej niezależne niż w ASP.NET w stylu Webforms. Ustal, czego chcesz od każdej warstwy niezależnie, napisz testy / specyfikacje, aby dopasować i upewnij się, że każda warstwa działa zgodnie z oczekiwaniami.
  2. Nawet jeśli używasz wtyczki, nic nie zastąpi odczytu (przynajmniej części) wygenerowanego kodu. Jeśli masz ogólny obraz tego, co dzieje się pod maską, debugowanie i dostosowywanie będzie znacznie łatwiejsze.
domgblackwell
źródło
2

Wtyczka restful_authentication i inne wtyczki, które ją rozszerzają, doskonale odpowiadają Twoim potrzebom. Szybkie wyszukiwanie na github.com ujawni wiele samouczków, przykładów i rozszerzeń. Po prostu przejdź tutaj:
- http://github.com/search?q=restful_authentication

Istnieje kilka projektów, które używają restful_authentication tylko po to, aby dostarczyć przykłady prostej aplikacji Rails z tylko częściami uwierzytelniającymi.

  1. http://github.com/fudgestudios/bort - Podstawowa aplikacja szynowa z: RESTful Authentication
  2. http://github.com/mrflip/restful_authentication_example - kolejny projekt ze świetnym przykładem korzystania z restful_authentication
  3. http://github.com/activefx/restful_authentication_tutorial - to samo co powyżej, z dołączonymi kilkoma innymi wtyczkami.
  4. http://railscasts.com/episodes/67-restful-authentication - świetny screencast wyjaśniający restful_authentication

Ta informacja powinna wystarczyć, abyś zaczął szukać orłów i reszek ... powodzenia.

Evgeny
źródło
2

Aktualizuję tylko to: Railscast # 250 Ryana Batesa pokazuje budowanie systemu uwierzytelniania od zera ...

Adam Jonas
źródło
2
Podczas gdy RailsCast w systemie autoryzacji na zamówienie jest świetny (i wielokrotnie wdrażałem podobny system), w żadnym wypadku nie jest on wstępnie zbudowany i nie zapewnia wszystkich funkcji, które zapewnia konfiguracja taka jak Devise.
Colin R,
Zgoda, ale Devise może być dość nieporęczny. Moim zdaniem wiele czasu i bólu serca można zaoszczędzić, budując własny system uwierzytelniania, chyba że naprawdę zamierzasz w pełni wykorzystać funkcje oferowane przez Devise.
Adam Jonas,
2
Szukam gotowego rozwiązania, którego mogę użyć w mojej aplikacji RoR.
Colin R
0

Kolejny głos na odprawę - być może nie jest tak konfigurowalny lub tak „in” jak authlogic, ale jeśli chodzi o możliwość umieszczenia go na miejscu i wyjścia, zdecydowanie warto się temu przyjrzeć.

Dave Smylie
źródło